2011-07-14 10 views
0

ビューベースのタブホストをプログラムで作成しようとしましたが、以下のように貼り付けられたfpeからfcを取得します。 findbyidでビューを見つけることができます。 私は何が欠けていますか?ありがとう。npe setId idsでビューをtabhostに追加しようとしたとき

public class tabs_view extends Activity { 
     @Override 
     public void onCreate(Bundle savedInstanceState) { 
     super.onCreate(savedInstanceState); 

     TabHost th=new TabHost(this); 

     Button b=new Button(this); 
     b.setId(1001); 
     b.setText("1"); 
     th.addView(b); 

     TabHost.TabSpec ts=th.newTabSpec("1"); 
     ts.setIndicator("1"); 
     ts.setContent(1001); //nullpointer exception originates here (line 27)  
     th.addTab(ts); 
     setContentView(th); 
    /* 
    RuntimeException: Unable to start activity ComponentInfo{...}: java.lang.NullPointerException 
    E/AndroidRuntime(11234):  at android.app.ActivityThread.performLaunchActivity(ActivityThread.java:2496) 
    ... 
    E/AndroidRuntime(11234): Caused by: java.lang.NullPointerException 
    E/AndroidRuntime(11234):  at android.widget.TabHost$ViewIdContentStrategy.<init>(TabHost.java:583) 
    E/AndroidRuntime(11234):  at android.widget.TabHost$ViewIdContentStrategy.<init>(TabHost.java:578) 
    E/AndroidRuntime(11234):  at android.widget.TabHost$TabSpec.setContent(TabHost.java:435) 
    E/AndroidRuntime(11234):  tabs_view.onCreate(tabs_view.java:27) 
    */ 
     } 
    } 

答えて

0

IDを検出する余分な作業を行うのではなく、自動リソースメカニズムを使用してみましたか?または、あなたの主な活動から別のTabActivityにあなたのタブを引っ張ってみてください。

th.addTab(th.newTabSpec("1") 
      .setIndicator("1") 
      .setContent(R.id.view1)); 

あなたを介して見ることができるAPIのデモコードは常にあります:同じNPE:Tab sample code

+0

私はtabactivityを使用してみましたが。 – rnq

+0

答えをありがとう。私はtabactivityを使ってみました:同じNPE。レイアウトファイルとRからのIDを使うことはフォールバックの選択肢かもしれませんが、私はこのアプローチを、アプリケーションのタブレイアウトが実行時に変更されなければならないようにすることを望んでいます。 – rnq

関連する問題