如何将底部navigatioview项目的点击仅限为一次,以免重新加载片段



我如何将底部navigatioview项目的点击限制为一次,以便当某人垃圾邮件垃圾邮件时,我的mapfragment不必重新加载自己?

我当前的解决方案是这个:

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;
    }
});

但是它不起作用,因为片段会抛出无零件。

我该更改如何实现上述?

尝试这个!为我工作:

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;
    }
});

最新更新