在我的应用中,我有很多菜单。例如A片段,B片段,C片段,& D片段。这些都是底部导航菜单。所以,我的问题是我如何回到BottomNavigation的其中一个特定Fragment。
举个例子。我选择了菜单A, 现在A片段是活的, 在那里我有一些对象, 我选择了对象,现在我被重定向到对象活动。现在,在Object Activity中,我有一个后退按钮,所以当我点击这个后退按钮时,我想回到Fragment A,而不是BottomNavigation的默认主菜单,我想被重定向到这个Object显示的地方,也就是Fragment A。
那么,我怎么才能做到这一点呢。有什么解决办法吗。
我试过从Object Activity中传递额外的信息,然后在HomeActivity上接收BottomNavigation设置的地方。
if(getIntent().getExtras.get("FUN").toString.equals(null){
FragmentTransaction fragmentTransaction = getSupportFragmentManager().beginTransaction();
fragmentTransaction.replace(R.id.nav_graph_fragment,new WineShopFragment());
fragmentTransaction.commitNow();
bottomNavigationView.setSelectedItemId(R.id.wineShopFragment);
这样,它可以工作,但是在运行之后,它又回到了Fragment A,但是,当我选择Fragment B或Fragment c或Fragment D时,Fragment A的内容也会和其他选择的Fragment一起显示。如果我选择Fragment B后,Fragment A和B就会重叠显示在一起。
所以,谁能告诉我如何才能成功做到不出现上述错误?
请补充 addToBackStack()
片断法
if(getIntent().getExtras.get("FUN").toString.equals(null){
FragmentTransaction fragmentTransaction = getSupportFragmentManager().beginTransaction();
fragmentTransaction.replace(R.id.nav_graph_fragment,new WineShopFragment());
fragmentTransactin.addToBackStack(null);
fragmentTransaction.commitNow();
bottomNavigationView.setSelectedItemId(R.id.wineShopFragment);
}
添加 popBackStack()
在对象活动中的反按点击方法,而不是调用主页的意图。
public void backPressClick(){
//this will pop the last added fragment which is fragmentA in your case
getSupportFragmentManager().beginTransaction().popBackStack();
}