0

階層ナビゲーションでは、ユーザーはツールバーの左側にある [上へ] ボタンを押して上に移動します。Jelly Bean の時点で、この機能を実現する簡単な方法があります。parentActivityNameAndroidManifest.xml ファイルに属性を追加して、階層ナビゲーションを有効にします。

ユーザーが ChildActivity から上に移動すると、次のようなインテントが作成されます。

Intent intent = new Intent(this, ParentActivity.class);
startActivity(intent);
finish();

舞台裏で正確に何が起こっているのか、特にインテントには何が含まれているのか知りたいですか?

また、親アクティビティの状態を保存したい場合。使えることが分かりますaddFlags(Intent.FLAG_ACTIVITY_CLEAR_TOP)。Android のよう に: 親アクティビティまで移動すると、親アクティビティが再作成さ れますIntent.FLAG_ACTIVITY_CLEAR_TOP。このフラグの標準的な動作は、親アクティビティ自体を含む、タスク スタック内の親アクティビティの上にあるすべてのアクティビティを終了してから、親アクティビティの新しいインスタンスを起動することです。

しかし、ChildActivity に次のコードを追加して、API 23 以前のデバイスで実行すると、ParentActivity は破棄されず、システムは古い親アクティビティを再開するだけです。API 23 を使用してデバイスで実行している間、ParentActivity は破棄され、システムは新しい ParentActivity をインスタンス化します。ただし、どちらの場合も、ParentActivity はその状態を保持します。何が起こっている?

public Intent getParentActivityIntent() {
    return super.getParentActivityIntent()
            .addFlags(Intent.FLAG_ACTIVITY_CLEAR_TOP);
}

そして、UP機能を実現するソースコードを見つけることができます!Google 検索を行ったのですが、必要な答えが見つかりませんでした。前もって感謝します!

4

0 に答える 0