android - 在活动之间切换而无需重新启动或重新加载活动
问题描述
我在我的应用程序中使用底部导航。我有 2 个菜单项(主页、搜索)。每次用户尝试从其他活动切换回家庭活动时,我都不想重新启动家庭活动。我尝试在我的意图中添加 FLAG_ACTIVITY_REORDER_TO_FRONT 但它不起作用。
搜索活动
bottomNavigationView.setOnNavigationItemSelectedListener(new BottomNavigationView.OnNavigationItemSelectedListener() {
@Override
public boolean onNavigationItemSelected(@NonNull MenuItem item) {
switch (item.getItemId()){
case R.id.home:
Intent intent = new Intent();
startActivity(new Intent(getApplicationContext(),MainActivity.class));
intent.setFlags(Intent.FLAG_ACTIVITY_REORDER_TO_FRONT);
overridePendingTransition(0,0);
return true;
case R.id.search:
break;
return false;
}
});
解决方案
你可以做这样的事情。在片段的帮助下,active
我们只是隐藏活动片段,显示新片段。
MainActivity.java
public class MainActivity extends AppCompatActivity {
final Fragment fragment_home = new HomeFragment();
final Fragment fragment_search = new DashboardFragment();
final FragmentManager fm = getSupportFragmentManager();
Fragment active = fragment_home;
@Override
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.activity_main);
BottomNavigationView navigation = (BottomNavigationView) findViewById(R.id.nav_view);
navigation.setOnNavigationItemSelectedListener(mOnNavigationItemSelectedListener);
fm.beginTransaction().add(R.id.nav_host_fragment, fragment_search, "fragment_search").hide(fragment_search).commit();
fm.beginTransaction().add(R.id.nav_host_fragment, fragment_home, "fragment_home").commit();
}
private BottomNavigationView.OnNavigationItemSelectedListener mOnNavigationItemSelectedListener
= new BottomNavigationView.OnNavigationItemSelectedListener() {
@Override
public boolean onNavigationItemSelected(@NonNull MenuItem item) {
switch (item.getItemId()) {
case R.id.navigation_home:
fm.beginTransaction().hide(active).show(fragment_home).commit();
active = fragment_home;
return true;
case R.id.navigation_dashboard:
fm.beginTransaction().hide(active).show(fragment_search).commit();
active = fragment_search;
return true;
}
return false;
}
};}
推荐阅读
- ruby - Kubernetes + Minikube - 如何查看所有标准输出?
- python - 在 Tornado 处理程序中对 json_util_dumps 中的项目进行排序
- html - 如何在 CSS 列表中将文本居中?
- vb.net - VB 二维数组项与图像的比较
- r - 在R中没有内置函数的情况下使用for循环获得下三角矩阵
- powershell - 如何通过使用 Powershell 查找每个文件夹名称中包含的匹配字符串来将文件夹复制到另一个文件夹
- ios - 如何刷新Kingfisher缓存的一系列图片?
- netbeans - Netbeans - “构建所有依赖项”内部工作
- java - 从 List Java 中获取单个元素
- javascript - Anonymous function error on Google Maps API marker click