如何在 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();
}
我在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();
}