Android TabHost.addTab ->空指针异常
这是我的代码:
public class Main extends Activity {
@Override
public void onCreate(Bundle savedInstanceState) {
TabHost tabHost = new TabHost(this);
TabHost.TabSpec tab = tabHost.newTabSpec("tab1");
tab.setIndicator("Tab 1");
tab.setContent(new TabHost.TabContentFactory() {
@Override
public View createTabContent(String tag) {
TextView tv = new TextView(Main.this);
tv.setText("tab 1 content");
return tv;
}
});
tabHost.addTab(tab);
setContentView(tabHost);
}
}
我收到此错误:
[...]
07-13 20:26:49.261: ERROR/AndroidRuntime(625): Caused by: java.lang.NullPointerException
07-13 20:26:49.261: ERROR/AndroidRuntime(625): at android.widget.TabHost.addTab(TabHost.java:206)
07-13 20:26:49.261: ERROR/AndroidRuntime(625): at test.test.Main.onCreate(Main.java:27)
[...]
我需要通过代码执行此操作,但无法使用 XML。谁能帮我修复这个代码吗?
Here is my code:
public class Main extends Activity {
@Override
public void onCreate(Bundle savedInstanceState) {
TabHost tabHost = new TabHost(this);
TabHost.TabSpec tab = tabHost.newTabSpec("tab1");
tab.setIndicator("Tab 1");
tab.setContent(new TabHost.TabContentFactory() {
@Override
public View createTabContent(String tag) {
TextView tv = new TextView(Main.this);
tv.setText("tab 1 content");
return tv;
}
});
tabHost.addTab(tab);
setContentView(tabHost);
}
}
I get this error:
[...]
07-13 20:26:49.261: ERROR/AndroidRuntime(625): Caused by: java.lang.NullPointerException
07-13 20:26:49.261: ERROR/AndroidRuntime(625): at android.widget.TabHost.addTab(TabHost.java:206)
07-13 20:26:49.261: ERROR/AndroidRuntime(625): at test.test.Main.onCreate(Main.java:27)
[...]
I need to do this by code and I can't use XML. Can anyone help me fix this code please ?
如果你对这篇内容有疑问,欢迎到本站社区发帖提问 参与讨论,获取更多帮助,或者扫码二维码加入 Web 技术交流群。
绑定邮箱获取回复消息
由于您还没有绑定你的真实邮箱,如果其他用户或者作者回复了您的评论,将不能在第一时间通知您!
发布评论
评论(4)
对于可能想知道 TabActivity 是否已弃用的人,请参阅文档 表示当您不使用 TabActivity 时,您需要在添加选项卡之前调用 setup() 。
For people who might wonder about TabActivity being deprecated the documentation says that you need to call setup() before adding tabs, when you don't use a TabActivity.
您应该使用 TabActivity,它需要将相同的特殊布局设置为内容(请参阅 http://developer.android.com/resources/tutorials/views/hello-tabwidget.html)。如果您不能使用 xml,您应该从 java 代码构造相同的内容:
}
You should use TabActivity, it needs same special layout to be set as content (see http://developer.android.com/resources/tutorials/views/hello-tabwidget.html). If you can not use xml you should construct the same content from java code:
}
检查框架源代码中的 TabHost.addTab(...) 方法表明您的 TabWidget 尚不可用。 TabWidget 必须首先在代码中创建,或者由系统在创建布局时创建,并且必须具有
android.R.id.tabs
的 id。Checking the method TabHost.addTab(...) in the framework source suggests that your TabWidget is not available yet. A TabWidget must be created in code first or by the system when creating a layout and must have an id of
android.R.id.tabs
.您是否考虑过扩展 TabActivity,然后调用 getTabHost() 来获取TabHost 的实例?不确定您的目标是什么,但这可能值得一看。
Have you thought about extending TabActivity, and then calling getTabHost() to get the instance of the TabHost? Not sure what your objective is, but this might be worth looking at.