ナビゲーション ドロワーを備えた Android アプリケーションを作成しました。このために、Android Studio テンプレートNavigation Drawer Activityを使用しました。アプリバーとナビゲーション ドロワーを組み合わせるには、ActionBarDrawerToggleクラスを使用します。
アクティビティ内で、さまざまなフラグメントを切り替えます。それらの 1 つには、より詳細なフラグメントを含む階層があります。this questionのような構成です。
したがって、最初のフラグメントを開くと、ドロワー トグルが表示されます。次に、リスト項目をクリックすると、最初のフラグメントがより詳細な 2 番目のフラグメントに置き換えられます。その後、元のドロワー トグルの代わりにアップ ボタンが表示されます。上ボタンをクリックすると、最初のフラグメントに戻り、上ボタンはドロワー トグルに戻ります。
2 番目のフラグメントを再度開くと、ドロワー トグルもアップ ボタンもありません。タブレットの戻るボタンを押すと、トグルが再び表示されますが、アップ ボタンはアプリを再起動するまで表示されません。
ドロワー トグルをアップ ボタンに変更するには、2 番目のフラグメントの onCreate 内で次のコマンドを使用します。
2 番目のフラグメントonCreate() :
//let the drawer toggle disappear
activity.toggle.setDrawerIndicatorEnabled(false);
//let the up button appear
activity.getSupportActionBar().setDisplayHomeAsUpEnabled(true);
上ボタンの機能は、次のコマンドで作成されます。
アクティビティonCreate() :
toggle.setToolbarNavigationClickListener(new View.OnClickListener() {
@Override
public void onClick(View v) {
onBackPressed();
}
});
アクティビティonBackPressed() :
int count = getFragmentManager().getBackStackEntryCount();
if (count < 1) {
super.onBackPressed();
Intent intent = new Intent(Intent.ACTION_MAIN);
intent.addCategory(Intent.CATEGORY_HOME);
startActivity(intent);
} else {
getFragmentManager().popBackStack();
if (count == 1) {
toggle.setDrawerIndicatorEnabled(true);
}
}
最初のフラグメント内のこのコードで作成した 2 番目のフラグメントを開く:
最初のフラグメントownOpenMethod ():
activity.getFragmentManager().beginTransaction()
.replace(R.id.content_frame, FirstFragment.newInstance())
.addToBackStack(null).commit();
ユーザー Wolfram Rittmeyer は、この問題をここで報告しました:
ツールバーを使用しているときに、表示オプションを切り替えて、その間にホームを使用しないようにする必要がありました。そうしないと、(内部 android.support.v7.internal.widget パッケージの)ToolbarWidgetWrapper 内の setDisplayOptions() メソッドは、同じフラグメントを 2 回目に入力したときにアイコンを再作成しません。他の人がこの問題に出くわしたときのために、これをここに残しておきます。
しかし、私は彼が何を意味するのか理解できません。誰かが同じ問題や修正方法のサンプルコードを持っていましたか?