2011-07-14 21 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

相关问题