在我的应用中,我有5个片段。为了在它们之间进行切换,我使用底部的导航栏。
此外,我需要从片段中打开活动,但是当我打开新活动时,它将在每个片段中打开。 (我的意思是在每种情况下都是碎片)
如何在一种情况下打开活动?
我的代码:
private BottomNavigationView.OnNavigationItemSelectedListener mOnNavigationItemSelectedListener
= new BottomNavigationView.OnNavigationItemSelectedListener() {
@Override
public boolean onNavigationItemSelected(@NonNull MenuItem item) {
Fragment fragment = null;
switch (item.getItemId()) {
case R.id.nav_home:
fragmentManager.beginTransaction().hide(active).show(fragment1).commit();
active = fragment1;
return true;
case R.id.nav_bookmark:
fragmentManager.beginTransaction().hide(active).show(fragment2).commit();
active = fragment2;
return true;
case R.id.nav_blog:
fragmentManager.beginTransaction().hide(active).show(fragment3).commit();
active = fragment3;
return true;
case R.id.nav_notification:
fragmentManager.beginTransaction().hide(active).show(fragment4).commit();
active = fragment4;
return true;
case R.id.nav_account:
fragmentManager.beginTransaction().hide(active).show(fragment5).commit();
active = fragment5;
return true;
}
return false;
}
};
谢谢!
答案 0 :(得分:1)
这显然是FragmentManager问题,而不是Activity问题。
相反,.hide().show()
使用.replace()
。
作为参考,请参见documentation。
答案 1 :(得分:0)
根据Android documentation,活动始终位于当前活动堆栈的顶部。
因此,如果您拥有带有MainActivity
和片段的BottomNavigationView
,则开始一个新的Activity将打开MainActivity
和BottomNavigationView
之上的活动。因此,不可能仅在BottomNavigationView
片段之一中打开活动。
要获得所需的行为,请考虑改用另一个Fragment
。