我有一个按钮,让我改变片段,它成功地做到了这一点。我打开了新片段,但底部的导航菜单并没有改变它的样式。这是一个简单的底部导航菜单,因为它是,当您选择当前正在查看的片段时,它会使底部的片段文本变大,图标也变大。这就是问题所在,它不会改变菜单。
goButton = (ImageButton) SOMEView.findViewById(R.id.go_button);
goButton.setOnClickListener(new View.OnClickListener() {
public void onClick(View v) {
System.out.println("Started");
AppCompatActivity mainActivity = new MainActivity();
((MainActivity) mainActivity).bottomNavigation.findViewById(R.id.nav_info).callOnClick();
Fragment nextFragment = new INFOFragment("second");
FragmentTransaction transaction = getFragmentManager().beginTransaction();
transaction.replace(R.id.fragment_container, nextFragment );
transaction.addToBackStack(null);
transaction.commit();
}
});
信息片段:
public class INFOFragment extends Fragment {
public String state;
@SuppressLint("ValidFragment")
public INFOFragment(String state) {
this.state = state;
}
@Nullable
@Override
public View onCreateView(@NonNull LayoutInflater inflater, @Nullable ViewGroup container, @Nullable Bundle savedInstanceState) {
if(state.equals("first")) {
System.out.println("info");
return inflater.inflate(R.layout.fragment_info, container, false);
}
else {
System.out.println("second state started");
return inflater.inflate(R.layout.fragment_another_view, container, false);
}
}}
主要活动:
public class MainActivity extends AppCompatActivity {
public BottomNavigationView bottomNavigation;
@Override
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.activity_main);
bottomNavigation = findViewById(R.id.bnavigation);
bottomNavigation.setOnNavigationItemSelectedListener(navigationListener);
getSupportFragmentManager().beginTransaction().replace(R.id.fragment_container, new INFOFragment("first")).commit();
bottomNavigation.setSelectedItemId(R.id.nav_info);
}
private BottomNavigationView.OnNavigationItemSelectedListener navigationListener =
new BottomNavigationView.OnNavigationItemSelectedListener() {
@Override
public boolean onNavigationItemSelected(@NonNull MenuItem item) {
Fragment selectedFragment = null;
switch(item.getItemId()) {
case R.id.nav_another_view:
System.out.println("vid ovo");
selectedFragment = new ANOTHERVIEWFragment();
break;
case R.id.nav_info:
System.out.println("v2id ovo");
selectedFragment = new INFOFragment("prvi");
break;
case R.id.nav_some_view:
selectedFragment = new SOMEFragment();
break;
}
getSupportFragmentManager().beginTransaction().replace(R.id.fragment_container,selectedFragment).commit();
return true;
}
};}
步骤1:在MainActivity上创建一个常量,如下所示
int prev_nav_item = 0;
第2步:
private BottomNavigationView.OnNavigationItemSelectedListener navigationListener =
new BottomNavigationView.OnNavigationItemSelectedListener() {
@Override
public boolean onNavigationItemSelected(@NonNull MenuItem item) {
Fragment selectedFragment = null;
switch(item.getItemId()) {
case R.id.nav_another_view:
System.out.println("vid ovo");
selectedFragment = new ANOTHERVIEWFragment();
prev_nav_item = 0;
break;
case R.id.nav_info:
System.out.println("v2id ovo");
selectedFragment = new INFOFragment("prvi");
prev_nav_item = 1;
break;
case R.id.nav_some_view:
selectedFragment = new SOMEFragment();
prev_nav_item = 2;
break;
}
getSupportFragmentManager().beginTransaction().replace(R.id.fragment_container,selectedFragment).commit();
return true;
}
};}
第3步:创建一个函数来更改主活动中的底部菜单位置
public void selectBottomMenu(final int position) {
Handler uiHandler = new Handler();
uiHandler.post(new Runnable() {
@Override
public void run() {
bottomNavigation.setCurrentItem(position);
}
});
}
步骤3:从每个片段更新底部菜单位置,如onResume()中的
@Override
public void onResume() {
super.onResume();
((MainActivity) mActivity).selectBottomMenu(0); //change value depending on your bottom menu position
}
我有底部的导航栏,点击导航栏中的项目,我正在替换片段。我有3个片段A、B、C,所以点击B项B片段被加载,在B中我调用3-4个API。所以现在如果我转到C,然后再次转到B,将创建一个新的B片段实例,并再次调用这些API,那么如何保存片段实例状态,并且在更改片段时不再调用API。这是我的密码。 我已经在MainActivity的onCreate中初始化了上面的片段成员变量
我有一个关于底部导航栏的奇怪问题,虽然我花了大量时间在它上面,但我无法解决。当我以“推荐”的方式(从许多教程中)使用它时,它就是无法导航。 那么,我所说的“推荐”方式是什么意思呢:我有一个单独的acticity,其中有一个名为“MainActivity”的navHostFragment。这个主要活动有一个XML布局文件,我将底部导航栏放在其中。BottomNavigationBar还有一个XML布
我创建了一个带有“底部导航活动”的新项目: 这是生成的代码: 如何使用底部栏更改为新片段?例如,我有3个片段:Fragment1 Fragment2和Fragment3,我想用底部栏中的3个按钮更改为它们。我还想通过左右滑动手指来切换片段,我该怎么做?
我想在我的项目中包括底部导航菜单,但它不起作用。底部导航菜单中没有显示菜单图标。我使用的是Android Studio北极狐。我做了所有正确的步骤,但仍然面临问题。这是我的代码,请帮我解决这个问题。谢谢。 主要活动Xml res\菜单\底部导航菜单 build.gradle 主题。xml
我希望我的应用程序更改片段视图和底部导航菜单中的选定项目。我尝试过这样做: 它改变了片段,但在底部导航菜单中选择的项目没有改变。我试着做了
本文向大家介绍Flutter实现底部菜单导航,包括了Flutter实现底部菜单导航的使用技巧和注意事项,需要的朋友参考一下 简介 现在我们的 APP 上面都会在屏幕下方有一排的按钮,点击不同的按钮可以进入不同的界面。就是说在界面的底部会有一排的按钮导航。可看下面的图示。 完成图示 程序工程目录 梳理下实现步骤 我们需要实现这个底部菜单导航,就需要有底部菜单的那一排图标按钮。图标按钮是固定在一个工具