为了在导航到一个fragment时保持选中的菜单项,可以调用NavigationView的setCheckedItem方法。该方法接受一个menu item的id值作为参数,并将它设置为选中状态。此外,也可以在onOptionsItemSelected方法中设置选中的菜单项。
示例代码如下:
//在MainActivity中导航到Fragment时,设置选中的菜单项 private void navigateToFragment(Fragment fragment, int itemId) { //使用FragmentManager导航到指定的fragment FragmentManager fragmentManager = getSupportFragmentManager(); FragmentTransaction transaction = fragmentManager.beginTransaction(); transaction.replace(R.id.container, fragment); transaction.commit(); //设置选中的菜单项 NavigationView navigationView = findViewById(R.id.nav_view); navigationView.setCheckedItem(itemId); }
//在Fragment的onCreateView方法中设置选中的菜单项 @Override public View onCreateView(LayoutInflater inflater, ViewGroup container, Bundle savedInstanceState) { // Inflate the layout for this fragment View view = inflater.inflate(R.layout.fragment_my, container, false);
//设置选中的菜单项
NavigationView navigationView = getActivity().findViewById(R.id.nav_view);
navigationView.setCheckedItem(R.id.nav_my_fragment);
return view;
}
//在MainActivity中处理选中的菜单项 @Override public boolean onOptionsItemSelected(MenuItem item) { int id = item.getItemId(); if (id == R.id.nav_my_fragment) { //导航到MyFragment并设置选中的菜单项 MyFragment myFragment = new MyFragment(); navigateToFragment(myFragment, id); return true; } //处理其他的菜单项 return super.onOptionsItemSelected(item); }