Значок панели навигации отмечен изменением
У меня есть фрагмент и событие onTouch для переключения на другой фрагмент.
public boolean onTouch(View v, MotionEvent event) {
int x = (int)event.getRawX();
int y = (int)event.getRawY();
if (event.getAction() == MotionEvent.ACTION_DOWN) {
FragmentManager fm = getActivity().getSupportFragmentManager();
FragmentTransaction ft = fm.beginTransaction();
ft.replace(R.id.fragment_stars, fragment);
ft.addToBackStack(null);
ft.commit();
}
return false;
}
Но значок на боковой панели не меняется, он остается в родительском фрагменте. Я пытался установить флажок в onCreateOptionsMenu, но ничего не получилось. Также я добавляю setHasOptionsMenu(true); в onCreateView
@Override
public void onCreateOptionsMenu(Menu menu, MenuInflater inflater){
inflater.inflate(R.menu.sidebar, menu);
MenuItem item = menu.findItem(R.id.sistemFragment);
item.setChecked(true);
super.onCreateOptionsMenu(menu, inflater);
}
sistemFragment - это фрагмент, на который я указываю, но он не меняет проверку, он остается в родительском фрагменте
1 ответ
Наконец я решил это с помощью NavigationUI, я не уверен, правильно ли это, но это работает.
public boolean onTouch(View v, MotionEvent event) {
int x = (int)event.getRawX();
int y = (int)event.getRawY();
if (event.getAction() == MotionEvent.ACTION_DOWN) {
final NavHostFragment navHostFragment = (NavHostFragment) requireActivity()
.getSupportFragmentManager()
.findFragmentById(R.id.nav_host_fragment_content_sidebar);
final NavController navController = navHostFragment.getNavController();
NavigationView nv = requireActivity().findViewById(R.id.nav_view);
MenuItem item = nv.getMenu().getItem(0);
NavigationUI.onNavDestinationSelected(item, navController);
}
return false;
}