0

こんにちは、現在、タブ ビューをホストするアクティビティがあり、各タブはアクティビティです。私が抱えている現在の問題は、アクティビティ(タブ)の1つに、ローテーションで保存する必要があるものがありますが、タブビューを保持して起動するアクティビティでのみ、ローテーションを変更したときにこれらのメソッドが呼び出されないようです各アクティビティをタブとして。

タブを保持するアクティビティの 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.

05-11 12:15:16.033: W/Bundle(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.LocalActivityManager.dispatchCreate(LocalActivityManager.java:455) 05-11 12:15:16.033: W/Bundle(32053): sinfic.mobile.ipdms.MainMenu.initActivity(MainMenu. java:66) 05-11 12:15:16.033: W/バンドル (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/バンドル (32053): android.app.ActivityThread.performLaunchActivity (ActivityThread.java:1920) 05-11 12:15:16.033: W/バンドル (32053): でandroid.app.ActivityThread.handleLaunchActivity(ActivityThread.java:1981) 05-11 12:15:16.033: W/Bundle(32053): android.app.ActivityThread.handleRelaunchActivity(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/Bundle(32053): android.app.ActivityThread.main(ActivityThread.java) :4424) 05-11 12:15:16.033: W/バンドル (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(32053): com.android.internal.os.ZygoteInit$MethodAndArgsCaller.run(ZygoteInit.java: 784) 05-11 12:15:16.033: W/バンドル (32053): com.android.internal.os.ZygoteInit.main (ZygoteInit.java:551) 05-11 12:15:16.033: W/バンドル ( 32053): dalvik.system.NativeStart.main(ネイティブ メソッド) でcom.android.internal.os.ZygoteInit.main(ZygoteInit.java:551) 05-11 12:15:16.033: W/Bundle(32053): dalvik.system.NativeStart.main(ネイティブメソッド)com.android.internal.os.ZygoteInit.main(ZygoteInit.java:551) 05-11 12:15:16.033: W/Bundle(32053): dalvik.system.NativeStart.main(ネイティブメソッド)

その参照: mlam.dispatchCreate(savedInstanceState);

4

1 に答える 1

1

スーパーも呼び出す必要があると思います。

@Override
protected void onSaveInstanceState(Bundle outState)
{
    // SAVE YOUR DATA IN "outState"
    super.onSaveInstanceState(outState);
}
@Override
protected void onRestoreInstanceState(Bundle savedInstanceState) {
    super.onRestoreInstanceState(savedInstanceState);
    //RECOVER YOUR DATA FROM "savedInstanceState"
}
于 2012-05-11T10:47:17.237 に答える