TabHost и FragmentTabHost
Добавлено: 22 ноя 2014, 12:35
Всем здравствуйте.
В общем, появилась проблема с табами.
Мне нужно было сделать две вкладки в каждой из который по viewpager.
Сначала делал наследовал от TabActivity и использовал две активности с viewpager как вкладки. Все отлично работало.
А так как TabActivity устарело, то решил использовать FragmentTabHost. Но он не может содержать активности как вкладки и вылетает с ошибкой.
Лог
Буду благодарен, если подскажете в каком направление двигаться.
Так должно было бы выглядеть.
В общем, появилась проблема с табами.
Мне нужно было сделать две вкладки в каждой из который по viewpager.
Сначала делал наследовал от TabActivity и использовал две активности с viewpager как вкладки. Все отлично работало.
Код: Выделить всё
ublic class MainActivity extends TabActivity {
@Override
public void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.activity_main);
TabHost tabHost = getTabHost();
Intent intentAndroid = new Intent().setClass(this, ActivityFirstWeek.class);
TabSpec tabSpec = tabHost
.newTabSpec("tag1")
.setIndicator("Первая неделя")
.setContent(intentAndroid);
tabHost.addTab(tabSpec);
Intent intentApple = new Intent().setClass(this,ActivitySecondWeek.class);
tabSpec = tabHost
.newTabSpec("tag2")
.setIndicator("Вторая неделя")
.setContent(intentApple);
tabHost.addTab(tabSpec);
}
}Код: Выделить всё
public class MainActivity extends FragmentActivity {
FragmentTabHost tabHost;
@Override
public void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.activity_main);
tabHost = (FragmentTabHost)findViewById(android.R.id.tabhost);
tabHost.setup(this,getSupportFragmentManager(),R.id.realtabcontent);
TabSpec spec = tabHost.newTabSpec("tag1").setIndicator("Первая неделя");
tabHost.addTab(spec, ActivityFirstWeek.class, null);
spec = tabHost.newTabSpec("tag2").setIndicator("Вторая неделя");
tabHost.addTab(spec, ActivitySecondWeek.class, null);
}
}Код: Выделить всё
11-22 17:32:02.071: E/AndroidRuntime(25186): FATAL EXCEPTION: main
11-22 17:32:02.071: E/AndroidRuntime(25186): java.lang.ClassCastException: com.gsonexample.ActivityFirstWeek cannot be cast to android.support.v4.app.Fragment
11-22 17:32:02.071: E/AndroidRuntime(25186): at android.support.v4.app.Fragment.instantiate(Fragment.java:404)
11-22 17:32:02.071: E/AndroidRuntime(25186): at android.support.v4.app.FragmentTabHost.doTabChanged(FragmentTabHost.java:343)
11-22 17:32:02.071: E/AndroidRuntime(25186): at android.support.v4.app.FragmentTabHost.onAttachedToWindow(FragmentTabHost.java:280)
11-22 17:32:02.071: E/AndroidRuntime(25186): at android.view.View.dispatchAttachedToWindow(View.java:12125)
11-22 17:32:02.071: E/AndroidRuntime(25186): at android.view.ViewGroup.dispatchAttachedToWindow(ViewGroup.java:2450)
11-22 17:32:02.071: E/AndroidRuntime(25186): at android.view.ViewGroup.dispatchAttachedToWindow(ViewGroup.java:2457)
11-22 17:32:02.071: E/AndroidRuntime(25186): at android.view.ViewGroup.dispatchAttachedToWindow(ViewGroup.java:2457)
11-22 17:32:02.071: E/AndroidRuntime(25186): at android.view.ViewGroup.dispatchAttachedToWindow(ViewGroup.java:2457)
11-22 17:32:02.071: E/AndroidRuntime(25186): at android.view.ViewRootImpl.performTraversals(ViewRootImpl.java:1207)
11-22 17:32:02.071: E/AndroidRuntime(25186): at android.view.ViewRootImpl.doTraversal(ViewRootImpl.java:1004)
11-22 17:32:02.071: E/AndroidRuntime(25186): at android.view.ViewRootImpl$TraversalRunnable.run(ViewRootImpl.java:5481)
11-22 17:32:02.071: E/AndroidRuntime(25186): at android.view.Choreographer$CallbackRecord.run(Choreographer.java:749)
11-22 17:32:02.071: E/AndroidRuntime(25186): at android.view.Choreographer.doCallbacks(Choreographer.java:562)
11-22 17:32:02.071: E/AndroidRuntime(25186): at android.view.Choreographer.doFrame(Choreographer.java:532)
11-22 17:32:02.071: E/AndroidRuntime(25186): at android.view.Choreographer$FrameDisplayEventReceiver.run(Choreographer.java:735)
11-22 17:32:02.071: E/AndroidRuntime(25186): at android.os.Handler.handleCallback(Handler.java:730)
11-22 17:32:02.071: E/AndroidRuntime(25186): at android.os.Handler.dispatchMessage(Handler.java:92)
11-22 17:32:02.071: E/AndroidRuntime(25186): at android.os.Looper.loop(Looper.java:137)
11-22 17:32:02.071: E/AndroidRuntime(25186): at android.app.ActivityThread.main(ActivityThread.java:5103)
11-22 17:32:02.071: E/AndroidRuntime(25186): at java.lang.reflect.Method.invokeNative(Native Method)
11-22 17:32:02.071: E/AndroidRuntime(25186): at java.lang.reflect.Method.invoke(Method.java:525)
11-22 17:32:02.071: E/AndroidRuntime(25186): at com.android.internal.os.ZygoteInit$MethodAndArgsCaller.run(ZygoteInit.java:737)
11-22 17:32:02.071: E/AndroidRuntime(25186): at com.android.internal.os.ZygoteInit.main(ZygoteInit.java:553)
11-22 17:32:02.071: E/AndroidRuntime(25186): at dalvik.system.NativeStart.main(Native Method)
Так должно было бы выглядеть.