Untitled

 avatar
unknown
plain_text
12 days ago
2.1 kB
4
Indexable
setOnNavigationItemSelectedListener(new OnNavigationItemSelectedListener() {
    @Override
    public boolean onNavigationItemSelected(@NonNull MenuItem item) {
        // Get the selected tab ID
        int itemId = item.getItemId();

        // 🚫 Disable clicks on the 2nd and 3rd tabs
        if (itemId == R.id.navigation_tab2 || itemId == R.id.navigation_tab3) {
            return false; // Prevent selection
        }

        // ✅ Allow 1st and 4th tabs to work as usual
        if (fragmentManager.isStateSaved()) {
            return false;
        }

        String newlySelectedItemTag = graphIdToTagMap.get(itemId);
        if (newlySelectedItemTag == null || selectedItemTag.equals(newlySelectedItemTag)) {
            return false; // Avoid null errors
        }

        fragmentManager.popBackStack(firstFragmentTag, FragmentManager.POP_BACK_STACK_INCLUSIVE);
        NavHostFragment selectedFragment = (NavHostFragment) fragmentManager.findFragmentByTag(newlySelectedItemTag);

        if (selectedFragment != null) {
            FragmentTransaction transaction = fragmentManager.beginTransaction()
                    .show(selectedFragment)
                    .setPrimaryNavigationFragment(selectedFragment);

            for (int i = 0; i < graphIdToTagMap.size(); i++) {
                int key = graphIdToTagMap.keyAt(i);
                String tag = graphIdToTagMap.get(key);
                if (!tag.equals(newlySelectedItemTag)) {
                    Fragment fragment = fragmentManager.findFragmentByTag(tag);
                    if (fragment != null) {
                        transaction.hide(fragment);
                    }
                }
            }

            transaction.addToBackStack(firstFragmentTag)
                    .setReorderingAllowed(true)
                    .commit();
        }

        selectedItemTag = newlySelectedItemTag;
        isOnFirstFragment = selectedItemTag.equals(firstFragmentTag);
        if (selectedFragment != null) {
            selectedNavController.setValue(selectedFragment.getNavController());
        }

        return true;
    }
});
Leave a Comment