0

したがって、質問が重複していることはわかっていますが、これらの回答で解決策が見つかりませんでした。MainActivity と GameDetailActivity があります。MainActivity GameDetailActivity の階層的な親。マニフェスト ファイルの宣言は次のとおりです。

    <activity
        android:name=".MainActivity"
        android:screenOrientation="portrait"
        android:theme="@style/AppTheme2"
        android:noHistory="false"
        >
        <intent-filter>
            <action android:name="android.intent.action.MAIN"/>

            <category android:name="android.intent.category.LAUNCHER"/>
        </intent-filter>
    </activity>
    <activity
        android:name=".GameDetailActivity"
        android:theme="@style/AppTheme2"
        android:parentActivityName=".MainActivity"
        android:noHistory="false"
        >
        <meta-data
            android:name="android.support.PARENT_ACTIVITY"
            android:value="de.exam.example.MainActivity"/>
    </activity>

ここで AppTheme2 宣言:

<style name="AppTheme2" parent="Theme.AppCompat.Light.DarkActionBar">
    <!-- Customize your theme here. -->
    <item name="android:windowActionBar">false</item>
    <item name="android:windowNoTitle">true</item>
    <item name="windowActionBar">false</item>
    <item name="windowNoTitle">true</item>

    <item name="colorPrimary">@color/colorPrimary</item>
    <item name="colorPrimaryDark">@color/colorPrimaryDark</item>
    <item name="colorAccent">@color/colorAccent</item>
</style>

ここで GameDetailActivity のロジックに戻ります。

@Override
public boolean onOptionsItemSelected(MenuItem item) {
    switch (item.getItemId()) {
        case android.R.id.home:
            Intent upIntent = NavUtils.getParentActivityIntent(this);
            if (NavUtils.shouldUpRecreateTask(this, upIntent)) {
                TaskStackBuilder.create(this)
                        .addNextIntentWithParentStack(upIntent)
                        .startActivities();
            } else {
                NavUtils.navigateUpTo(this, upIntent);
            }
            return true;
        default:break;
    }
    return super.onOptionsItemSelected(item);
}

そして、GameDetailActivity でホームアップ (戻る "<-") ボタンを押すと、MainActivity で常に savedInstanceState が null になっています。MainActivity で保存されたデータが失われる理由がわかりません。

編集

ここで GameDetailActivity コードを開始します。

Intent i = new Intent(getActivity(), GameDetailActivity.class);
i.putExtra("game", clickedGame);
startActivity(i);

これを修正する方法を知っている人はいますか?

前もって感謝します

4

3 に答える 3

1

新しいバック スタックで上に移動する

ユーザーが別のアプリのタスクからアクティビティに入った後に [上へ] ボタンを押すと、アプリはnew task with上に移動する前に適切なバック スタックを開始します。

解決

親アクティビティに移動

このメソッドを呼び出すと、現在のアクティビティが終了し (or resumes)、適切な親アクティビティが開始されます。ターゲットの親アクティビティがタスクのバック スタックにある場合は、それがbrought forward.転送される方法は、親アクティビティが onNewIntent() 呼び出しを処理できるかどうかによって異なります。

ソース


   @Override
    public boolean onOptionsItemSelected(MenuItem item) {
        switch (item.getItemId()) {
        // Respond to the action bar's Up/Home button
        case android.R.id.home:
            NavUtils.navigateUpFromSameTask(this);
            return true;
        }
        return super.onOptionsItemSelected(item);
    }
于 2016-11-07T06:30:24.583 に答える