搜索解決方案後,我決定重新提出一個問題already asked here。LinearLayout中的android TabHost
我有一個TabHost控件,我需要把它放在其他佈局(LinearLayout)中。我整理了谷歌給我們的例子(http://developer.android.com/resources/tutorials/views/hello-tabwidget.html),並做了同樣的事情,唯一的區別是TabHost不是佈局的根,顯示視圖的活動類沒有擴展TabActivity,但活動
我的XML是這樣的:
<LinearLayout xmlns:android="http://schemas.android.com/apk/res/android"
android:orientation="vertical" android:layout_width="fill_parent"
android:layout_height="fill_parent">
<TabHost android:id="@+id/tabhost"
android:layout_width="fill_parent" android:layout_height="fill_parent">
<LinearLayout android:orientation="vertical"
android:layout_width="fill_parent" android:layout_height="fill_parent"
android:padding="5dp">
<TabWidget android:id="@android:id/tabs"
android:layout_width="fill_parent" android:layout_height="53px"
android:tabStripEnabled="false" android:layout_margin="1px"
android:background="#222222" />
<FrameLayout android:id="@android:id/tabcontent"
android:layout_width="fill_parent" android:layout_height="fill_parent"
android:padding="5dp" />
</LinearLayout>
</TabHost>
</LinearLayout>
和Java類是這樣的:
public class TabsExampleActivity extends Activity {
TabHost tabHost;
@Override
public void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.main);
initTabs();
}
private void initTabs() {
Resources res = getResources(); // Resource object to get Drawables
tabHost = (TabHost) findViewById(R.id.tabhost); // The activity TabHost
TabHost.TabSpec spec; // Resusable TabSpec for each tab
Intent intent; // Reusable Intent for each tab
intent = new Intent("eu.pkg.tabsExample.BuildingTabActivity");
spec = tabHost.newTabSpec("text").setIndicator("",
res.getDrawable(R.drawable.tab_text_selector))
.setContent(intent);
tabHost.addTab(spec);
intent = new Intent().setClass(this, ClipArtTabActivity.class);
spec = tabHost.newTabSpec("clipart").setIndicator("",
res.getDrawable(R.drawable.tab_clipart_selector))
.setContent(intent);
tabHost.addTab(spec);
intent = new Intent().setClass(this, FrameSelectorTabActivity.class);
spec = tabHost.newTabSpec("frame").setIndicator("",
res.getDrawable(R.drawable.tab_frame_selector))
.setContent(intent);
tabHost.addTab(spec);
intent = new Intent().setClass(this, BgSelectorTabActivity.class);
spec = tabHost.newTabSpec("bg").setIndicator("",
res.getDrawable(R.drawable.tab_bg_selector))
.setContent(intent);
tabHost.addTab(spec);
intent = new Intent().setClass(this, BuildingTabActivity.class);
spec = tabHost.newTabSpec("build").setIndicator("",
res.getDrawable(R.drawable.tab_build_selector))
.setContent(intent);
tabHost.addTab(spec);
tabHost.setCurrentTab(4);
}
}
如果我作爲基地活動TabActivity使用,我用的是TabHost爲根,然後將代碼工作得很好,我看標籤......等。
這個問題似乎是僅當餘延伸活性和錯誤是:
04-11 18:53:38.874:ERROR/AndroidRuntime(32539): 了java.lang.RuntimeException:無法啓動活動 ComponentInfo {eu.pkg.tabsExample/eu.pkg.tabsExample.TabsExampleActivity}: 顯示java.lang.NullPointerException
的問題是:如何舉辦的LinearLayout內TabHost?
編輯:
在意見建議改變後,日誌貓錯誤是:
04-11 20:52:01.993:ERROR/imdg81(28747):IsShutDownStarted() 04-11 20:52:01.999:錯誤/ SensorManager(28747):registerListener 4:gp2a 光傳感器延遲:240 04-11 20:52:01.999:錯誤/ SensorManager(28747): ====== = >>> Sensor Thread RUNNING < < < ======== 04-11 20:52:02.075:ERROR/i mdg81(28747):IsShutDownStarted()04-11 20:52:02.284: 錯誤/ LockPatternKeyguardView(28747):電話啓動完成。所以可以 發送廣播消息用於音樂播放器04-11 20:52:05.507: ERROR/JDWP(3675):無法寫入握手字節:斷管(-1 14)04-11 20:52:05.609:ERROR/AndroidRuntime(3675):致命異常: main 04-11 20:52:05.609:ERROR/AndroidRuntime(3675): java.lang.RuntimeException:無法啓動活動 ComponentInfo {eu.pkg.tabsExample/eu.pkg .tabsExample.TabsExampleActivity}: java.lang.IllegalStateException:您是否忘記調用'public void setup(LocalActivityManager activityGroup)'? 04-11 20:52:05.609: 錯誤/ AndroidRuntime(3675):在 android.app.ActivityThread.performLaunchActivity(ActivityThread.java:2663) 04-11 20:52:05.609:ERROR/AndroidRuntime(3675):在 android.app.ActivityThread.handleLaunchActivity(ActivityThread.java:2679) 04-11 20:52:05.609:ERROR/AndroidRuntime(3675):at android.app.ActivityThread.access $ 2300(ActivityThread.java:125) 04-11 20:52:05.609:ERROR/AndroidRuntime(3675):at android.app.ActivityThread $ H.handleMessage(ActivityThread。java:2033) 04-11 20:52:05.609:ERROR/AndroidRuntime(3675):at android.os.Handler.dispatchMessage(Handler.java:99)04-11 20:52:05.609:ERROR/AndroidRuntime (3675):at android.os.Looper.loop(Looper.java:123)04-11 20:52:05.609: ERROR/AndroidRuntime(3675):at android.app.ActivityThread.main(ActivityThread.java :4627)04-11 20:52:05.609:ERROR/AndroidRuntime(3675):at java.lang.reflect.Method.invokeNative(Native Method)04-11 20:52:05.609:ERROR/AndroidRuntime(3675) ): java.lang.reflect.Method.invoke(Method.java:521)04-11 20:52:05.609: ERROR/AndroidRuntime(3675):at com.android.internal.os.ZygoteInit $ Method AndArgsCaller.run(ZygoteInit.java:858) 04-11 20:52:05.609:ERROR/AndroidRuntime(3675):at com.android.internal.os.ZygoteInit.main(ZygoteInit.java:616)04-11 20:52:05.609:ERROR/AndroidRuntime(3675):at dalvik.system.NativeStart.main(Native Method)04-11 20:52:05.609: 錯誤/ AndroidRuntime(3675):原因: java。 lang.IllegalStateException:您忘記調用'public void setup(LocalActivityManager activityGroup)'嗎? 04-11 20:52:05.609: 錯誤/ AndroidRuntime(3675):在 android.widget.TabHost $ IntentContentStrategy.getContentView(TabHost.java:654) 04-11 20:52:05.609:ERROR/AndroidRuntime(3675) ):at android.widget.TabHost.setCurrentTab(TabHost.java:328)04-11 20:52:05.609:ERROR/AndroidRuntime(3675):at android.widget.TabHost.addTab(TabHost.java:213 )04-11 20:52:05.609: ERROR/AndroidRuntime(3675):at eu.pkg.tabsExample.TabsExampleActivity.initTabs(TabsExampleActivity.java:43) 04-11 20:52:05.609:ERROR/AndroidRuntime( 3675):at eu.pkg.tabsExample.TabsExampleActivity.onCreate(TabsExampleActivity.java:27) 04-11 20:52:05.609:ERROR/AndroidRuntime(3675):at android.app.Instrumentation.callActivityOnCreate(Instrumentation.java:1047) 04-11 20:52:05.609:ERROR/AndroidRuntime(3675):at android.app.ActivityThread.performLaunchActivity(ActivityThread.java:2627) 04 -11 20:52:05.609:ERROR/AndroidRuntime(3675):... 11多個
如果不擴展TabActivity,則無法創建Tab。 – kosa 2012-04-11 15:59:42
你確定嗎?你從哪裏得到這些信息?還有其他佈局可以存在的TabHost替代方案嗎? – 2012-04-11 16:05:01
讓線性佈局中的tabhost不是問題(我正在做同樣的事情),但沒有擴展tabactivity,你不能創建Tab。 – kosa 2012-04-11 16:07:03