Значок панели навигации отмечен изменением

У меня есть фрагмент и событие 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;
        }
Другие вопросы по тегам