TabHost и FragmentTabHost

Интерфейс, диалоги, темы, стили, меню
Ответить
Majo
Сообщения: 1
Зарегистрирован: 05 ноя 2014, 14:22

TabHost и FragmentTabHost

Сообщение Majo » 22 ноя 2014, 12:35

Всем здравствуйте.
В общем, появилась проблема с табами.
Мне нужно было сделать две вкладки в каждой из который по 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);
}
}
А так как TabActivity устарело, то решил использовать FragmentTabHost. Но он не может содержать активности как вкладки и вылетает с ошибкой.

Код: Выделить всё

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)
Буду благодарен, если подскажете в каком направление двигаться.
Так должно было бы выглядеть.
Вложения
Screenshot_2014-11-22-17-12-35.png
Screenshot_2014-11-22-17-12-35.png (40.73 КБ) 1908 просмотров

Аватара пользователя
Foenix
Сообщения: 4201
Зарегистрирован: 20 окт 2012, 12:01

Re: TabHost и FragmentTabHost

Сообщение Foenix » 22 ноя 2014, 14:28

проходи по ссылка в подписи
R.id.team

NullPointerException - что делать???
viewtopic.php?f=33&t=3899&p=28952#p28952
Где моя ошибка?
viewtopic.php?f=60&t=3198

Ответить