Fragment re-created on bottom navigation view item selected

后端 未结 15 2564
长发绾君心
长发绾君心 2020-12-07 23:55

Following is my code for bottom navigation view item selected

bottomNavigationView.setOnNavigationItemSelectedListener(new BottomNavigationView.OnNavigationI         


        
15条回答
  •  萌比男神i
    2020-12-08 00:55

    How To stop recreating Fragment when it is Already Visible Using BottomNavigationView

    Step 1--

         @Override
    public boolean onNavigationItemSelected(@NonNull MenuItem item) {
        Fragment fragment = null;
        String valuestring;      
        **if (item.getItemId() == lastSelectedItemId) { // added this
            Log.e( "both id is same","LULL" );
            return true;
        }**
        switch (item.getItemId()) {
           case R.id.navigation_category:
          SetActioBarText( getString( R.string.label_actionbar_categories ) );
                fragment = new CategoryFragment();
                valuestring = "category";
                break;
            case R.id.navigation_favourite:
         SetActioBarText( getString( R.string.label_actionbar_favourites ) );
                fragment = new FavouriteFragment();
                valuestring = "favourites";
                break;
            default:
                throw new IllegalStateException( "Unexpected value: " +                  menuItem.getItemId() );
        }
        return loadFragment( fragment, valuestring ,menuItem);
    }
    

    Now Step 2---

        private boolean loadFragment(Fragment fragment, String argument,MenuItem item) {
      
        if (fragment != null) {
           
            transaction = fragmentManager.beginTransaction();
            transaction.addToBackStack( argument );
            transaction.setTransition( FragmentTransaction.TRANSIT_FRAGMENT_FADE );
            transaction.replace( R.id.frame_container, fragment,                         "demofragment").commitAllowingStateLoss();
    
         lastSelectedItemId= item.getItemId();
        
            return true;
        }
        return false;
    }
    

提交回复
热议问题