36

Gmail と TED アプリからの私の観察から、アップ ナビゲーションの動作は同じ状態 (スクロール位置) で親に移動し、Google がドキュメントで言っているのとは異なります。親インテントを作成して開始するようなアップ ナビゲーションを実装します。

Androidサンプルコードからコードを実装すると、すべての状態がなくなりました(以前に設定したすべての追加パラメーターとスクロール位置)。これの適切な方法は何ですか? Androidドキュメントで何も見つかりません。

以下はコードです:

public boolean onOptionsItemSelected(MenuItem item) {
switch (item.getItemId()) {
    case android.R.id.home:
        Intent upIntent = new Intent(this, MyParentActivity.class);
        if (NavUtils.shouldUpRecreateTask(this, upIntent)) {
            // This activity is not part of the application's task, so create a new task
            // with a synthesized back stack.
            TaskStackBuilder.from(this)
                    .addNextIntent(new Intent(this, MyGreatGrandParentActivity.class))
                    .addNextIntent(new Intent(this, MyGrandParentActivity.class))
                    .addNextIntent(upIntent)
                    .startActivities();
            finish();
        } else {
            // This activity is part of the application's task, so simply
            // navigate up to the hierarchical parent activity.
            NavUtils.navigateUpTo(this, upIntent);
        }
        return true;
}
return super.onOptionsItemSelected(item);

}

私の場合、AB と C という 3 つのアクティビティを取得しました。ユーザーが A から BI に移動すると、いくつかのエクストラが配置されonCreate、BI はそのエクストラを使用してデータベースからデータをクエリして行を入力し、C から戻るとすべてのエクストラがなくなり、アクティビティB 何も表示されません。

4

5 に答える 5

1

これを使用できます:

@Override
public boolean onOptionsItemSelected(MenuItem item) {
    switch (item.getItemId()) {
        case android.R.id.home:
            super.onBackPressed();
            return true;
    }
    return super.onOptionsItemSelected(item);
}
于 2015-05-23T16:25:00.010 に答える
0

親アクティビティの状態を保存し、呼び出し元から戻った後にそれを回復する必要があります。

プロセスの完全な説明とコードについては、Save Instance State を使用して Android アクティビティの状態を保存するを参照してください。

于 2012-11-08T17:07:22.460 に答える