こんにちは、私は現在、タブビューをホストするアクティビティを持っており、各タブはアクティビティです。私が持っている現在の問題は、アクティビティ(タブ)の1つに、ローテーションで保存する必要のあるものがありますが、ローテーションを変更するとこれらのメソッドが呼び出されないように見えます。各アクティビティをタブとして表示します。アクティビティをタブとして表示すると、onSaveInstanceState/onRestoreInstanceStateメソッドが呼び出されます。
ここでタブを保持している活動ののonCreateメソッドです:
LocalActivityManager mlam = new LocalActivityManager(this, false);
tabs=(TabHost)findViewById(android.R.id.tabhost);
mlam.dispatchCreate(savedInstanceState);
tabs.setup(mlam);
TabHost.TabSpec spec;
Intent intent;
// Create an Intent to launch an Activity for the tab (to be reused)
intent = new Intent().setClass(this, MyProcessList.class);
spec = tabs.newTabSpec("artists").setIndicator((buildTabIndicator("Home")))
.setContent(intent);
tabs.addTab(spec);
// Create an Intent to launch an Activity for the tab (to be reused)
intent = new Intent().setClass(this, MyProcessList.class);
spec = tabs.newTabSpec("artists2").setIndicator((buildTabIndicator("Menu")))
.setContent(intent);
// Create an Intent to launch an Activity for the tab (to be reused)
intent = new Intent().setClass(this, MyProcessList.class);
tabs.addTab(spec);
spec = tabs.newTabSpec("artists2").setIndicator((buildTabIndicator("Options")))
.setContent(intent);
tabs.addTab(spec);
tabs.setCurrentTab(0);`
同じクラスのonSaveInstanceState/onRestoreInstanceState方法:
@Override
public void onSaveInstanceState(Bundle bundle) {
bundle.putString(BOB,"ola");
}
@Override
public void onRestoreInstanceState(Bundle bundle) {
String hi=bundle.getString(BOB);
System.out.println(hi);
}
しかし、タブ(MyProcessList)自分のonSaveInstanceState /としての活動は、 onRestoreInstanceStateメソッドは呼び出されないようです...これには方法がありますか?
に関して、
はここのMainMenu活動の方法を使用するときに私が手に警告です:
05-11 12:15:16.017: W/Bundle(32053): Key BOB expected Bundle but value was a java.lang.String. The default value <null> was returned.
5月11日12:15:16.033:W /バンドル(32053):キャストしよう 05-11 12:15:16.033:W/Bundle(32053):java.lang.ClassCastException:java.lang.Stringはandroid.os.Bundleにキャストできません 05-11 12:15:16.033 :W/Bundle(32053):android.os.Bundle.getBundle(Bundle.java:1142) 05-11 12:15:16.033:W/Bundle(32053):android.app.LocalActivityManage (mainMenu.java:66) 05-11 12:15:16.033:W/Bundle(32053): 15:16.033:W/Bundle(32053):sinfic.mobile.ipdms.core.IpdmsCoreActivity.onCreate(IpdmsCoreActivity.java:38) 05-11 12:15:16.033:W/Bundle(32053):android。 app.Activity.performCreate(Activity.java:4465) 05-11 12:15:16.033:W/Bundle(32053):android.app.Instrumentation.callActivityOnCreate(Instrumentation.java:1049) 05-11 12: 15:16.033:W/Bundle(32053):android.app.ActivityThread.performLaunchActivity(ActivityThread.java:1920) 05-11 12:15:16.033:W/Bundle(32053):android.app.ActivityThread。 handleLaunchActivity(ActivityThread.java:1981) 05-11 12:15:16.033:W/Bundle(32053):android.app.ActivityThread.ha ndleRelaunchActivity(ActivityThread.java:3351) 05-11 12:15:16.033:W/Bundle(32053):android.app.ActivityThread.access $ 700(ActivityThread.java:123) 05-11 12:15:16.033 :W/Bundle(32053):android.app.ActivityThread $ H.handleMessage(ActivityThread.java:1151) 05-11 12:15:16.033:W/Bundle(32053):android.os.Handler.dispatchMessage (Handler.java:99) 05-11 12:15:16.033:W/Bundle(32053):android.os.Looper.loop(Looper.java:137) 05-11 12:15:16.033:W /バンドル(32053):android.app.ActivityThread.main(ActivityThread.java:4424) 05-11 12:15:16.033:W/Bundle(32053):java.lang.reflect.Method.invokeNative(ネイティブメソッド) 05-11 12:15:16.033:W /バンドル(32053):java.lang.reflect.Method.invoke(Method.java:511) 05-11 12:15:16.033:W/Bundle 3205 3):com.android.internal.os.ZygoteInit $ MethodAndArgsCaller.run(ZygoteInit.java:784) 05-11 12:15:16.033:W/Bundle(32053):com.android.internal.os。 ZygoteInit.main(ZygoteInit.java:551) 5月11日12:15:16.033:dalvik.system.NativeStart.mainで(ネイティブメソッド)へ
その参照元: MLAMバンドル(32053)/ W。dispatchCreate(savedInstanceState);
これらの呼び出しは、保存/復元データに関してこの順序で行われますか。 – Maxrunner
あなたはそれを試してみましたか... –
うまく動いていないようですが、これらをタブのようにアクティビティに入れることを意味しますか?実際には両方のクラスに入れますが、タブビューのアクティビティのみですこれらのメソッドを呼び出す... – Maxrunner