我创建了一个带有导航抽屉的 android 应用程序。为此,我使用了 android studio 模板Navigation Drawer Activity。为了组合 appbar 和导航抽屉,它使用ActionBarDrawerToggle类。
在我的活动中,我在不同的片段之间切换。其中一个具有包含更详细片段的层次结构。这是一个类似这个问题的结构。
因此,当您打开第一个片段时,您可以看到抽屉切换。然后单击一个列表项,它将第一个片段替换为更详细的第二个片段。之后出现向上按钮,而不是原来的抽屉切换。当您单击向上按钮时,您会返回到第一个片段,并且向上按钮会变回抽屉切换。
当您再次打开第二个片段时,没有抽屉切换和向上按钮。当您按下平板电脑的后退按钮时,切换按钮将再次出现,但在您重新启动应用程序之前不会显示向上按钮。
要将抽屉开关更改为向上按钮,我在第二个片段的 onCreate 中使用以下命令:
第二个片段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);
}
}
打开我在第一个片段中使用此代码制作的第二个片段:
第一个片段ownOpenMethod ():
activity.getFragmentManager().beginTransaction()
.replace(R.id.content_frame, FirstFragment.newInstance())
.addToBackStack(null).commit();
用户 Wolfram Rittmeyer在这里报告了这个问题:
使用工具栏时,我不得不切换显示选项以同时不使用主页。否则,ToolbarWidgetWrapper(内部 android.support.v7.internal.widget 包)中的 setDisplayOptions() 方法在第二次输入同一片段时不会重新创建图标。当其他人也偶然发现这个问题时,将其留在这里。
但我不明白他的意思。有人遇到同样的问题或任何示例代码如何解决?