我正在我的应用中使用NavigationView抽屉。如果用户按下后退按钮,我正在尝试返回上一个片段。这段代码效果很好:
@Override
public void onBackPressed() {
FragmentManager fm = getSupportFragmentManager();
Fragment fr = fm.findFragmentById(R.id.flContent);
if (fm.getBackStackEntryCount() > 0 ) {
fm.popBackStackImmediate();
}
else {
finish();
}
}
但我的NavigationView没有改变。如何更新NavigationView状态(检查正确的片段,更改标题等),以便它可以反映我的应用程序中的更改?
答案 0 :(得分:0)
您应该使用addToBackStack方法实现Back Navigation。看看this。
答案 1 :(得分:0)
我创建了一个解决方法:当创建抽屉或单击menuItem时,我将存储当前menuItem:
private void setupDrawerContent(NavigationView navigationView) {
// Storing "home" menuItem when app starts
storedMenuItem = navigationView.getMenu().getItem(0);
navigationView.setNavigationItemSelectedListener(
new NavigationView.OnNavigationItemSelectedListener() {
@Override
public boolean onNavigationItemSelected(MenuItem menuItem) {
selectDrawerItem(menuItem);
// Storing menuItem when another item is selected
storedMenuItem = menuItem;
return true;
}
});
}
所以在我的onBackPressed方法中,我这样做:
@Override
public void onBackPressed() {
selectDrawerItem(storedMenuItem);
}
selectDrawerItem没有变化(我使用this代码)
我不知道它是否是一个很好的解决方案,但它运作良好。