我实现了新的NavigationView(来自支持库)和几个片段,然后我重写了onBackPressed函数并添加了这个:
getFragmentManager().popBackStack();
将我返回到上一个片段。
所以我需要的是:如何将导航视图的当前所选项目更改为弹出的片段?
答案 0 :(得分:3)
最后我明白了, 首先,我创建了导航全局和公共的实例。
public NavigationView navigationview;
然后我添加了片段的onCreate和onResume:
NavigationView navigationView = ((MainActivity) getActivity()).navigationview;
navigationView.getMenu().getItem(index).setChecked(true);
和onResume:
navigationView.getMenu().getItem(index).setChecked(true);
这个解决了我的问题,希望这有助于某人。
答案 1 :(得分:0)
我知道这有点晚了但是我找到了一个解决方案,对于那些有大量片段的活动进行编码可能要快一点。
(在你的活动中)
FragmentManager.OnBackStackChangedListener
fragmentManager.addOnBackStackChangedListener(this);
从界面添加方法...
@Override
public void onBackStackChanged() {
MainActivityFragment f = (MainActivityFragment) fragmentManager.findFragmentById(R.id.fragment_container);
//Log.v(TAG, "OnBackStackChanged to fragment with index: " + f.getMenuIndex());
navigationView.getMenu().getItem(f.getMenuIndex()).setChecked(true);
}
(在单独的文件中创建一个接口,将其命名为MainActivityFragment)或任何活动的名称。
public interface MainActivityFragment {
int getMenuIndex();
}
(该活动中使用的所有片段)
从界面添加方法...
@Override
public int getMenuIndex() {
return 2;
}
这似乎是一些额外的工作,但从长远来看,它使得它非常简单,因为你需要为新的Fragments做的就是实现Activity的界面并返回它的菜单项的索引。