わかりました、通常、私は質問者ではありませんが、グーグルで問題を解決できませんでした。それで、私の最初の StackOverflow-Question です。
いくつかのフラグメントをトリガーするナビゲーション ドロワーを使用したアクティビティがあります。これらのフラグメントには独自のサブフラグメントがあります。
ユーザーがアプリの奥に進むと、「ハンバーガー」アイコンがアップキャレットに置き換えられます。キャレットまたはバックキーを押すと、サブフラグメントがバックスタックからポップされ、ハンバーガー アイコンが戻ります。
これは、サブフラグメントで何が起こるかです:
@Override
public boolean onOptionsItemSelected(MenuItem item) {
switch (item.getItemId()) {
case android.R.id.home:
// Called when the up caret in actionbar is pressed
getActivity().onBackPressed();
return true;
}
return super.onOptionsItemSelected(item);
}
アクティビティでは:
@Override
public void onBackPressed() {
// turn on the Navigation Drawer image
FragmentManager fragmentManager = getSupportFragmentManager();
if (fragmentManager.getBackStackEntryCount () != 0)
mDrawerToggle.setDrawerIndicatorEnabled(true);
}
super.onBackPressed();
}
ここまでは順調ですね。
サブフラグメントを深く掘り下げると、問題が発生します。サブフラグメントにはリストと onLongClickItem があり、ユーザーがそれらのリスト項目を変更できるコンテキスト アクションバーが表示されます。
そのコンテキスト アクションバーを開いて戻るボタンを押すと、(予想どおり) 閉じるだけでなく、アップキャレットが drawer-hamburger-icon-thingie に変更されます。もちろん、なぜこれが起こるのかは理解していますが、クリーンな解決策がわかりません (またはオンラインで見つけることができませんでした)。
私は間違った方法で進んでいますか、それともここで簡単な手順を見逃しているだけですか? setDrawerIndicatorEnabled を onBackStackChangedListener に移動し、タグ付けされた backStackItem をリッスンする方法に沿って何かを考えていました。
しかし、私は考えました。すべてのコードを台無しにし始める前に、いくつかの赤ちゃんの一歩を踏み出して、オンラインで質問してみましょう。
ありがとう