尝试使用setId ids向tabhost添加视图时使用npe

时间:2011-07-14 21:31:50

标签: android view tabs

尝试以编程方式创建基于视图的tabhost,但我从下面粘贴的npe获取了一个fc。 我可以用findbyid找到视图。 我错过了什么?感谢。

  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)
  */
      }
  }

1 个答案:

答案 0 :(得分:0)

您是否尝试过使用自动资源机制,而不是进行额外的ID查找工作?或者尝试将标签拉入主要活动的单独TabActivity

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

您可以查看API演示代码:Tab sample code