底部导航视图不更新 RecyclerView

Bottom Navigation View not updating RecyclerView

您好,我在我的应用程序中使用底部导航,底部有三个选项卡,并且有三个不同的片段。每当用户从底部更改选项卡时,它应该显示相关的 RecyclerView 数据,但问题是在所有三个选项卡中它显示一个 RecyclerView。它在所有三个选项卡中显示 ItemOneFragment 的 RecyclerView。

public class MainActivity extends AppCompatActivity {

    @Override
    protected void onCreate(Bundle savedInstanceState) {
        super.onCreate(savedInstanceState);
        setContentView(R.layout.activity_main);
        BottomNavigationView bottomNavigationView = (BottomNavigationView)
                findViewById(R.id.navigation);

        bottomNavigationView.setOnNavigationItemSelectedListener
                (new BottomNavigationView.OnNavigationItemSelectedListener() {
                    @Override
                    public boolean onNavigationItemSelected(@NonNull MenuItem item) {
                      //  Fragment selectedFragment = null;
                        switch (item.getItemId()) {
                            case R.id.navigation_home:
                                Fragment selectedFragment = ItemOneFragment.newInstance();
                                FragmentTransaction transaction = getSupportFragmentManager().beginTransaction();
                                transaction.replace(R.id.frame_layout, selectedFragment);
                                transaction.commit();
                                break;
                            case R.id.navigation_dashboard:
                                Fragment Englishsfrag = ItemTwoFragment.newInstance();
                                FragmentTransaction transactiontwo = getSupportFragmentManager().beginTransaction();
                                transactiontwo.replace(R.id.frame_layout, Englishsfrag);
                                transactiontwo.commit();
                                break;
                            case R.id.navigation_notifications:
                                Fragment mixfrag = ItemThreeFragment.newInstance();
                                FragmentTransaction transactionthree = getSupportFragmentManager().beginTransaction();
                                transactionthree.replace(R.id.frame_layout, mixfrag);
                                transactionthree.commit();
                                break;
                        }

                        return true;
                    }
                });

        //Manually displaying the first fragment - one time only
        FragmentTransaction transaction = getSupportFragmentManager().beginTransaction();
        transaction.replace(R.id.frame_layout, ItemOneFragment.newInstance());
        transaction.commit();

        //Used to select an item programmatically
        //bottomNavigationView.getMenu().getItem(2).setChecked(true);
    }
}

我觉得按照下面的方式比较好

public class MainActivity extends AppCompatActivity {

Fragment fragment;

@Override
protected void onCreate(Bundle savedInstanceState) {
    super.onCreate(savedInstanceState);
    setContentView(R.layout.activity_main);
    BottomNavigationView bottomNavigationView = (BottomNavigationView)
            findViewById(R.id.navigation);
    fragment = ItemOneFragment.newInstance();

    bottomNavigationView.setOnNavigationItemSelectedListener
            (new BottomNavigationView.OnNavigationItemSelectedListener() {
                @Override
                public boolean onNavigationItemSelected(@NonNull MenuItem item) {
                    //  Fragment selectedFragment = null;
                    switch (item.getItemId()) {
                        case R.id.navigation_home:
                            fragment = ItemOneFragment.newInstance();
                            break;
                        case R.id.navigation_dashboard:
                            fragment = ItemTwoFragment.newInstance();
                            break;
                        case R.id.navigation_notifications:
                            fragment = ItemThreeFragment.newInstance();
                            break;
                    }
                    FragmentTransaction transaction = getSupportFragmentManager().beginTransaction();
                    transaction.replace(R.id.frame_layout, fragment);
                    transaction.commit();
                    return true;
                }
            });
}

删除为每个案例创建 FragmentTransaction

bottomNavigationView.setOnNavigationItemSelectedListener
      (new BottomNavigationView.OnNavigationItemSelectedListener() {
      @Override
      public boolean onNavigationItemSelected(@NonNull MenuItem item) {
      Fragment selectedFragment = null;
      switch (item.getItemId()) {
      case R.id.action_item1:
      selectedFragment = ItemOnFragment.newInstance();
      break;
      case R.id.action_item2:
      selectedFragment = ItemTwoFragment.newInstance();
      break;
      case R.id.action_item3:
      selectedFragment = ItemThreeFragment.newInstance();
      break;
      case R.id.action_item4:
      selectedFragment = ItemFourFragment.newInstance();
      break;
      }
      FragmentTransaction transaction = getSupportFragmentManager().
    beginTransaction();
      transaction.replace(R.id.frame_layout, selectedFragment);
      transaction.commit();
      return true;
      }
      });

      //Manually displaying the first fragment - one time only
      FragmentTransaction transaction = getSupportFragmentManager().
    beginTransaction();
      transaction.replace(R.id.frame_layout, ItemOnFragment.newInstance());
      transaction.commit();