添加tabspec到tabhost时,我得到Nullpointer异常。我已经试过了
public class MainActivity extends FragmentActivity implements TabHost.TabContentFactory {
@Override
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.activity_main);
TabHost tabHost= (TabHost) findViewById(R.id.tabhost);
tabHost.setup();
TabSpec TextTabSpec = tabHost.newTabSpec("Text");
TextTabSpec.setIndicator("", getResources().getDrawable(R.drawable.phone_1));
TextTabSpec.setContent(this);
TabSpec LogTabSpec = tabHost.newTabSpec("Favourites");
LogTabSpec.setIndicator("", getResources().getDrawable(R.drawable.call_group));
LogTabSpec.setContent(this);
TabSpec ConTabSpec = tabHost.newTabSpec("contacts");
ConTabSpec.setIndicator("", getResources().getDrawable(R.drawable.message));
ConTabSpec.setContent(this);
tabHost.addTab(TextTabSpec);
tabHost.addTab(LogTabSpec);
tabHost.addTab(ConTabSpec);
tabHost.setCurrentTab(0);
}
@Override
public boolean onCreateOptionsMenu(Menu menu) {
// Inflate the menu; this adds items to the action bar if it is present.
getMenuInflater().inflate(R.menu.main, menu);
return true;
}
@Override
public View createTabContent(String tag) {
// TODO Auto-generated method stub
return null;
}
}
和我的logcat是
05-16 11:08:29.650: E/AndroidRuntime(655): FATAL EXCEPTION: main
05-16 11:08:29.650: E/AndroidRuntime(655): java.lang.RuntimeException: Unable to start activity ComponentInfo{com.example.tabsample/com.example.tabsample.MainActivity}: java.lang.NullPointerException
05-16 11:08:29.650: E/AndroidRuntime(655): at android.app.ActivityThread.performLaunchActivity(ActivityThread.java:2663)
05-16 11:08:29.650: E/AndroidRuntime(655): at android.app.ActivityThread.handleLaunchActivity(ActivityThread.java:2679)
05-16 11:08:29.650: E/AndroidRuntime(655): at android.app.ActivityThread.access$2300(ActivityThread.java:125)
05-16 11:08:29.650: E/AndroidRuntime(655): at android.app.ActivityThread$H.handleMessage(ActivityThread.java:2033)
05-16 11:08:29.650: E/AndroidRuntime(655): at android.os.Handler.dispatchMessage(Handler.java:99)
05-16 11:08:29.650: E/AndroidRuntime(655): at android.os.Looper.loop(Looper.java:123)
05-16 11:08:29.650: E/AndroidRuntime(655): at android.app.ActivityThread.main(ActivityThread.java:4627)
05-16 11:08:29.650: E/AndroidRuntime(655): at java.lang.reflect.Method.invokeNative(Native Method)
05-16 11:08:29.650: E/AndroidRuntime(655): at java.lang.reflect.Method.invoke(Method.java:521)
05-16 11:08:29.650: E/AndroidRuntime(655): at com.android.internal.os.ZygoteInit$MethodAndArgsCaller.run(ZygoteInit.java:868)
05-16 11:08:29.650: E/AndroidRuntime(655): at com.android.internal.os.ZygoteInit.main(ZygoteInit.java:626)
05-16 11:08:29.650: E/AndroidRuntime(655): at dalvik.system.NativeStart.main(Native Method)
05-16 11:08:29.650: E/AndroidRuntime(655): Caused by: java.lang.NullPointerException
05-16 11:08:29.650: E/AndroidRuntime(655): at android.widget.TabHost$FactoryContentStrategy.getContentView(TabHost.java:622)
05-16 11:08:29.650: E/AndroidRuntime(655): at android.widget.TabHost.setCurrentTab(TabHost.java:323)
05-16 11:08:29.650: E/AndroidRuntime(655): at android.widget.TabHost.addTab(TabHost.java:213)
05-16 11:08:29.650: E/AndroidRuntime(655): at com.example.tabsample.MainActivity.onCreate(MainActivity.java:33)
05-16 11:08:29.650: E/AndroidRuntime(655): at android.app.Instrumentation.callActivityOnCreate(Instrumentation.java:1047)
05-16 11:08:29.650: E/AndroidRuntime(655): at android.app.ActivityThread.performLaunchActivity(ActivityThread.java:2627)
05-16 11:08:29.650: E/AndroidRuntime(655): ... 11 more
我不知道我犯了什么错误。
最好使用这个
TabHost tabhost=(TabHost)findViewById(R.id.tabhost);
tabhost.setup();
TabHost.TabSpec tabsep=tabhost.newTabSpec("tag1"); // this one needed
tabsep.setContent(R.id.tab1);
tabsep.setIndicator("Clock");
tabhost.addTab(tabsep);
tabsep=tabhost.newTabSpec("tag2");
tabsep.setContent(R.id.tab2);
tabsep.setIndicator("Button");
tabhost.addTab(tabsep);
tabhost.setCurrentTab(0);
扩展超类TabActivity并获取TabHost TabHost =getTabHost();这样的
public class TabHost_Activity extends TabActivity {
public void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.activity_tab_host_);
Resources resource=getResources();
TabHost tabHost=getTabHost();
TabSpec tabSpecAndroid = tabHost.newTabSpec("Android").setIndicator("", resource.getDrawable(R.drawable.icon_android_config)).setContent(this);
tabHost.addTab(tabSpecAndroid);
}
}