2011-07-14 19 views
0

試圖以編程的方式創建一個基於視圖的tabhost,但我從下面粘貼的猿得到一個fc。 我可以用findbyid找到視圖。 我錯過了什麼?謝謝。當試圖添加一個視圖到setId的tabhost ids

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演示代碼,你可以看看通過:Tab sample code

+0

我試圖用一個tabactivity:同一NPE。 – rnq

+0

感謝您的回答。我嘗試使用Tabactivity:相同的NPE。從佈局文件和R使用ID可能是一個後備選項,但我更喜歡使這種方法工作,因爲應用中的選項卡布局必須在運行時更改。 – rnq

相關問題