2011-10-18 11 views
0

私はタブベースのアプリケーションを作成していますが、これはプロトタイプ段階です。基本的なコンテンツを表示するために必要なタブを作成しました(Androidのドキュメントに記載されています)。今、私は活動の一つにいくつかのボタンを追加しようとしています、しかし、新しいボタンをインスタンス化すると、実行時例外を作成します。アクティビティにボタンを追加するとランタイム例外が発生する

public class HomeActivity extends Activity { 

    private Button menuBTN = new Button(this); 


    @Override 
    public void onCreate(Bundle savedInstanceState) { 
     super.onCreate(savedInstanceState); 

     TextView textview = new TextView(this); 
     textview.setText("This is the main application entry, and home screen"); 
     this.setContentView(textview); 

     this.getMenuBTN().setText("Menu"); 


//  this.addContentView(this.getMenuBTN(), new LayoutParams(LayoutParams.WRAP_CONTENT, LayoutParams.WRAP_CONTENT)); 
    } 

私はすべてのボタンを作成しない場合は、基本的なアプリケーションが正常に起動します。

+0

何をしようとしていますか?テキストビューとボタンを画面に追加しますか?その場合は、レイアウトを使用して両方のビューに対応します。 \ nとにかく、** onCreate()**の前に作成ボタンを置いてはいけません。 ** this **を使うのは** onCreate()** – PH7

答えて

2

あなたがプログラム的にボタンのレイアウトを定義する必要がありますが、私はあなたがXMLで定義すると、その後でそれを指すことをお勧めします:あなたはその後、XMLレイアウトにsetContentView()する必要があるだろう

menuBTN = (Button)findViewByID(R.id.your_menubutton_id_in_xml); 

場所ボタンがあります。

setContentView(R.layout.your_layout_xml); 
+0

ですが、今のところこれは簡単なプロトタイプで、その力を示しています。 –

+0

そのメモでは、レイアウトを別々のXMLファイルに分けるのに、どこから良いリソースを見つけることができますか? –

2

これは悪い行IT:

menuBTN = new Button(this); 

を活動の準備ができていない:あなたが呼び出すことができます作成​​中に、その後

private Button menuBTN; 

:あなたが代わりにこれを行う必要があります

private Button menuBTN = new Button(this); 

をonCreateが呼び出される前に使用するため、その前に参照しないでください。

関連する問題