android - 片段可见性消失并在相应按钮单击时可见
问题描述
我有五个片段的视图寻呼机和底部导航栏,在调用第一个片段时试图隐藏其他片段。
FragmentManager fm = getSupportFragmentManager();
FragmentTransaction ft = fm.beginTransaction();
protected void selectFragment(MenuItem item) {
item.setChecked(true);
switch (item.getItemId()) {
case R.id.action_home:
displayFragment(DefaultFragment.class);
ft.hide(FavouriteFragment.class);//need help here
break;
case R.id.action_info:
displayFragment(FavouriteFragment.class);
break;
case R.id.action_msg:
displayFragment(NotifyFragment.class);
break;
case R.id.action_profile:
displayFragment(ProfileFragment.class);
break;
case R.id.action_history:
displayFragment(OrderHistoryFragment.class);
break;
}
}
背景你可以看到前面的片段来了,虽然点击的片段有蓝色背景
解决方案
您需要做的就是:
switch (item.getItemId()) {
case R.id.action_home:
Fragment fragment = new DefaultFragment();
loadFragment(fragment);
break;
case R.id.action_info:
Fragment fragment = new FavouriteFragment();
loadFragment(fragment);
break;
case R.id.action_msg:
Fragment fragment = new NotifyFragment();
loadFragment(fragment);
break;
case R.id.action_profile:
Fragment fragment = new ProfileFragment();
loadFragment(fragment);
break;
case R.id.action_history:
Fragment fragment = new OrderHistoryFragment();
loadFragment(fragment);
break;
}
private void loadFragment(Fragment fragment)
{
FragmentTransaction ft = getSupportFragmentManager().beginTransaction();
ft.replace(R.id.content_login_activity, fragment);
ft.commitAllowingStateLoss();
this.getSupportFragmentManager().popBackStackImmediate(null,
FragmentManager.POP_BACK_STACK_INCLUSIVE);
}
推荐阅读
- vpn - 如何建立gate2gate ipsec vpn网关对?
- c++ - 使用变体变量作为其他变体函数的输入
- azure - 如何将文件上传到 c# Azure Function 生成的 FTP/webdav?
- android - 如何在所有 Recyclerview 项目之后设置按钮位置
- reactjs - MUI 对话框 - 无法在对话框操作中将 onClose 传递给 onClick
- reactjs - TypeError:组合减速器时分配给常量变量
- reactjs - 赛普拉斯在尝试在 reactjs 应用程序中运行测试时抛出 Webpack 编译错误
- excel - 如何在excel的单个单元格中设置多个数据验证条件
- vue.js - 直接访问url时VueJs内部服务器错误500
- python - 从 python Array 下载多个 Url