2014-02-22 44 views
0

我正在開發一個應用程序。如何在Android中使用TabHost Widget的不同活動?

哪需要,活動根據Tab變化而變化。 我已經使用了下面的代碼並創建了兩個活動。

StoryAlbum1.java StoryAlbum2.java

我在manifest.xml文件還定義了兩個。

但我得到了運行時錯誤。

我的代碼是:

ListView list_stories; 
TabHost tab_stories; 
@Override 
     protected void onCreate(Bundle savedInstanceState) 
     { 
      requestWindowFeature(Window.FEATURE_NO_TITLE); 
      super.onCreate(savedInstanceState); 
      setContentView(R.layout.story_list); 

      tab_stories=(TabHost)findViewById(R.id.tabhoststories); 
      tab_stories.setup(); 

      setupTab1(new TextView(this), "Album 1"); 
      setupTab2(new TextView(this), "Album 2"); 
     } 
     private void setupTab1(final View view, final String tag) 
     { 

      View tabview = createTabView(tab_stories.getContext(), tag); 

      Intent intent1 = new Intent().setClass(this, StoryAlbum1.class); 
      TabSpec tab1 = tab_stories.newTabSpec(tag).setIndicator(tabview).setContent(intent1); 

      tab_stories.addTab(tab1); 
     } 
     private void setupTab2(final View view, final String tag) 
     { 

      View tabview = createTabView(tab_stories.getContext(), tag); 

      Intent intent2 = new Intent().setClass(this, StoryAlbum2.class); 
      TabSpec tab2 = tab_stories.newTabSpec(tag).setIndicator(tabview).setContent(intent2); 

      tab_stories.addTab(tab2); 
     } 
private static View createTabView(final Context context, final String text) 
     { 
      View view = LayoutInflater.from(context).inflate(R.layout.tabs_text, null); 
      TextView tv = (TextView) view.findViewById(R.id.tabsText); 
      tv.setText(text); 
      return view; 
     } 
} 

請幫我解決這個錯誤!

我的錯誤日誌是:

02-22 06:03:58.247: E/AndroidRuntime(1191): FATAL EXCEPTION: main 
02-22 06:03:58.247: E/AndroidRuntime(1191): java.lang.RuntimeException: Unable to start activity ComponentInfo{com.example.videostreaming/com.example.videostreaming.Story_List}: java.lang.IllegalStateException: Did you forget to call 'public void setup(LocalActivityManager activityGroup)'? 
02-22 06:03:58.247: E/AndroidRuntime(1191):  at android.app.ActivityThread.performLaunchActivity(ActivityThread.java:2180) 
02-22 06:03:58.247: E/AndroidRuntime(1191):  at android.app.ActivityThread.handleLaunchActivity(ActivityThread.java:2230) 
02-22 06:03:58.247: E/AndroidRuntime(1191):  at android.app.ActivityThread.access$600(ActivityThread.java:141) 
02-22 06:03:58.247: E/AndroidRuntime(1191):  at android.app.ActivityThread$H.handleMessage(ActivityThread.java:1234) 
02-22 06:03:58.247: E/AndroidRuntime(1191):  at android.os.Handler.dispatchMessage(Handler.java:99) 
02-22 06:03:58.247: E/AndroidRuntime(1191):  at android.os.Looper.loop(Looper.java:137) 
02-22 06:03:58.247: E/AndroidRuntime(1191):  at android.app.ActivityThread.main(ActivityThread.java:5039) 
02-22 06:03:58.247: E/AndroidRuntime(1191):  at java.lang.reflect.Method.invokeNative(Native Method) 
02-22 06:03:58.247: E/AndroidRuntime(1191):  at java.lang.reflect.Method.invoke(Method.java:511) 
02-22 06:03:58.247: E/AndroidRuntime(1191):  at com.android.internal.os.ZygoteInit$MethodAndArgsCaller.run(ZygoteInit.java:793) 
02-22 06:03:58.247: E/AndroidRuntime(1191):  at com.android.internal.os.ZygoteInit.main(ZygoteInit.java:560) 
02-22 06:03:58.247: E/AndroidRuntime(1191):  at dalvik.system.NativeStart.main(Native Method) 
02-22 06:03:58.247: E/AndroidRuntime(1191): Caused by: java.lang.IllegalStateException: Did you forget to call 'public void setup(LocalActivityManager activityGroup)'? 
02-22 06:03:58.247: E/AndroidRuntime(1191):  at android.widget.TabHost$IntentContentStrategy.getContentView(TabHost.java:747) 
02-22 06:03:58.247: E/AndroidRuntime(1191):  at android.widget.TabHost.setCurrentTab(TabHost.java:413) 
02-22 06:03:58.247: E/AndroidRuntime(1191):  at android.widget.TabHost.addTab(TabHost.java:240) 
02-22 06:03:58.247: E/AndroidRuntime(1191):  at com.example.videostreaming.Story_List.setupTab1(Story_List.java:55) 
02-22 06:03:58.247: E/AndroidRuntime(1191):  at com.example.videostreaming.Story_List.onCreate(Story_List.java:38) 
02-22 06:03:58.247: E/AndroidRuntime(1191):  at android.app.Activity.performCreate(Activity.java:5104) 
02-22 06:03:58.247: E/AndroidRuntime(1191):  at android.app.Instrumentation.callActivityOnCreate(Instrumentation.java:1080) 
02-22 06:03:58.247: E/AndroidRuntime(1191):  at android.app.ActivityThread.performLaunchActivity(ActivityThread.java:2144) 

謝謝。

+0

請上傳錯誤日誌以及。 – Kedarnath

+0

好的,我發佈了錯誤日誌。你可以看到我更新的問題。 –

回答

3

你需要從活動到的ActivityGroup改變MainActivity的基類,如下所示:

public class MainActivity extends ActivityGroup { 
... 
} 

的ActivityGroup將採取LocalActivityManager的一個實例的照顧。所以你不需要創建它。在更改基類之後,只需調用基類中定義的getLocalActivityManager()函數即可獲取該實例。打電話給tabHost的設置功能是這樣的:

tabHost.setup(this.getLocalActivityManager()); 
+0

謝謝,我得到了解決方案。 –