バックプレス後にナビゲーションドロワーの選択状態を処理する適切な方法は何ですか?
Android Studio の SDK サンプルのような n 個のエントリ (リストビュー) を持つナビゲーション ドロワーがあります。ナビゲーション ドロワー エントリをクリックすると、それらをバック スタックに追加して、それらに戻ることができるようにします。
onNavigationDrawerItemSelected(int pos) で私は持っています
FragmentManager fragmentManager = getSupportFragmentManager();
FragmentTransaction transaction = fragmentManager.beginTransaction();
if (position == 0) {
transaction.replace(R.id.container, new FragmentA());
} else if (position == 1) {
transaction.replace(R.id.container, new FragmentB());
} else {
transaction.replace(R.id.container, new FragmentC());
}
transaction.addToBackStack(null);
transaction.commit();
ドロワーの 2 番目のエントリをクリックすると、B が選択され、A が置き換えられます。後で戻るボタンをクリックすると、フラグメント A が再び表示されますが、B はナビゲーション ドロワーで選択されたままです。
押し戻した後、ドロワーの選択ステータスを更新するにはどうすればよいですか?
どういうわけか、mDrawerListView.setItemChecked(position, true); への呼び出しが必要です。または NavigationDrawerFragment.selectItem(int position)。しかし、どの位置に?どうすれば覚えられますか?
onBackPressed で傍受しますか?
@Override
public void onBackPressed() {}
しかし、どのフラグメントが再びアクティブになったかをどのように知ることができますか? そして、どの位置に対応します。
私が見えない簡単な解決策はありますか?ナビドロワーと組み合わせてバックを使って選択状態を更新するのが定番パターンのようです。