如何在 Android 中更改底部导航布局中的主菜单

How to change the home menu in bottom navigation layout in Android

我在BottomNavigationLayout

中添加了三个菜单

如何在启动时默认打开中心菜单?

@Override
protected void onCreate(Bundle savedInstanceState) {
    super.onCreate(savedInstanceState);
    setContentView(R.layout.activity_quiz);
    loadFragment(new ProfileFragment());

    BottomNavigationView navigation = findViewById(R.id.navigation);
    navigation.setOnNavigationItemSelectedListener(mOnNavigationItemSelectedListener);
}

private void loadFragment(Fragment fragment) {
    // load fragment
    FragmentTransaction transaction = getSupportFragmentManager().beginTransaction();
    transaction.replace(R.id.fragmentContainer, fragment);
    transaction.addToBackStack(null);
    transaction.commit();
}

我用它来加载片段,它还加载了与中心菜单关联的片段,但在底部导航中选择了第一个菜单。

希望您能理解我的问题。如果没有,请检查 Clash Royale。在本游戏中,战斗布局是在启动时首先弹出的,也是在底部导航中选择的战斗菜单。

如果有人知道如何做到这一点,请帮助我。 提前致谢

onCreate() 方法中调用您要在应用程序启动时首先打开的片段。

当您点击底部菜单时,您正在执行一些操作来更改带有片段的菜单的颜色,将该片段放在带有操作的 Activity 的 onCreate 上,因此默认情况下,当应用启动它会显示您想要的片段。

这里是参考:

 HomeFragment homeFragment = new HomeFragment().newInstance();
        getSupportFragmentManager().beginTransaction()
                .replace(R.id.fragmentContainer, homeFragment)
                .commit();

完整代码在这里:

 @Override
protected void onCreate(Bundle savedInstanceState) {
    super.onCreate(savedInstanceState);
    setContentView(R.layout.activity_quiz);
    loadFragment(new ProfileFragment());

    BottomNavigationView navigation = findViewById(R.id.navigation);
    navigation.setOnNavigationItemSelectedListener(mOnNavigationItemSelectedListener);

     HomeFragment homeFragment = new HomeFragment().newInstance();
        getSupportFragmentManager().beginTransaction()
                .replace(R.id.fragmentContainer, homeFragment)
                .commit();

}

将此添加到您的主要活动中

 navigation.setSelectedItemId(R.id.navigation_notifications);  // Pass your menu id which you want to selected first

将您的中间标签设置为所选项目

bottomNavigationView.setSelectedItemId(R.id.tab2);

private BottomNavigationView.OnNavigationItemSelectedListener mOnNavigationItemSelectedListener
        = new BottomNavigationView.OnNavigationItemSelectedListener() {

    @Override
    public boolean onNavigationItemSelected(@NonNull MenuItem item) {
        switch (item.getItemId()) {
            case R.id.tab1:
                loadFragment(new ProfileFragment1());
                return true;
            case R.id.tab2:
                loadFragment(new ProfileFragment2());
                return true;
            case R.id.tab3:
                loadFragment(new ProfileFragment3());
                return true;
        }
        return false;
    }
};

就去找这个伙伴吧!只需复制并粘贴到您的编辑器中即可!

@Override
protected void onCreate(Bundle savedInstanceState) {
    super.onCreate(savedInstanceState);
    setContentView(R.layout.activity_quiz);
 //   loadFragment(new ProfileFragment()); Removed this line

    BottomNavigationView navigation = findViewById(R.id.navigation);
    navigation.setOnNavigationItemSelectedListener(mOnNavigationItemSelectedListener);
// Added this line
navigation.setSelectedItemId(bottomNavigation.getMenu().getItem(1).getItemId()); 
}

private void loadFragment(Fragment fragment) {
    // load fragment
    FragmentTransaction transaction = getSupportFragmentManager().beginTransaction();
    transaction.replace(R.id.fragmentContainer, fragment);
    transaction.addToBackStack(null);
    transaction.commit();
}