2017-03-04 60 views
2

如何限制BottomNavigatioView项目的点击次数,以便在有人垃圾邮件时我的mapfragment不必重新加载自己?如何将BottomNavigatioView项目的点击限制为一次,以不重新加载片段?

我目前的解决办法是这样的一个:

fragmentManager = getSupportFragmentManager(); 
bottomNavigation.setOnNavigationItemSelectedListener(new BottomNavigationView.OnNavigationItemSelectedListener() { 
    @Override 
    public boolean onNavigationItemSelected(@NonNull MenuItem item) { 
     Fragment fragment = null; 
     Fragment currentFragment = fragmentManager.findFragmentById(R.id.main_container); 
     int id = item.getItemId(); 
     switch (id){ 
      case R.id.World: 
       if (!(currentFragment instanceof MapsFragment)) { 
       fragment = new MapsFragment(); 
        } 
       break; 

      case R.id.Friends: 
       fragment = new FriendsFragment(); 
       break; 


      case R.id.Chats: 
       fragment = new You_Fragment(); 
       break; 
     } 
     final FragmentTransaction transaction = fragmentManager.beginTransaction(); 
     transaction.replace(R.id.main_container, fragment).commit(); 
     return true; 
    } 
}); 

但由于片段抛出一个空指针它不工作。

我可以改变以达到上述目的?

+0

哪一行是throwin空指针? –

+0

transaction.replace因为第二次点击时片段为空 – Ale4303

回答

1

试试这个!为我工作:

fragmentManager = getSupportFragmentManager(); 
bottomNavigation.setOnNavigationItemSelectedListener(new BottomNavigationView.OnNavigationItemSelectedListener() { 
@Override 
public boolean onNavigationItemSelected(@NonNull MenuItem item) { 
    Fragment fragment = null; 
    Fragment currentFragment = getSupportFragmentManager().findFragmentById(R.id.main_container); 
    int id = item.getItemId(); 
    switch (id){ 
     case R.id.World: 
      if (currentFragment instanceof MapsFragment) { 

       return false; 

      } else { 

       fragment = new MapsFragment(); 

      } 
      break; 

     case R.id.Friends: 
      fragment = new FriendsFragment(); 
      break; 


     case R.id.Chats: 
      fragment = new You_Fragment(); 
      break; 
    } 
    final FragmentTransaction transaction = fragmentManager.beginTransaction(); 
    transaction.replace(R.id.main_container, fragment).commit(); 
    return true; 
    } 
}); 
相关问题