我试图用活动内部的片段实现底部导航。 我已经做到了,并且成功了。
要替换单击每个导航项的片段,我使用以下代码。
private BottomNavigationView.OnNavigationItemSelectedListener mOnNavigationItemSelectedListener
= new BottomNavigationView.OnNavigationItemSelectedListener() {
@Override
public boolean onNavigationItemSelected(@NonNull MenuItem item) {
switch (item.getItemId()) {
case R.id.navigation_notifications:
loadFragment(new NotificationsFragment());
return true;
case R.id.navigation_notes:
loadFragment(new NotesFragment());
return true;
case R.id.navigation_about:
loadFragment(new AboutFragment());
return true;
}
return false;
}
};
private void loadFragment(Fragment fragment) {
// load fragment
FragmentTransaction transaction = getSupportFragmentManager().beginTransaction();
transaction.replace(R.id.frame_container, fragment);
transaction.addToBackStack(null);
transaction.commit();
}
现在的问题是,当我多次单击底部导航栏中的导航时,该片段也会多次添加到后堆栈中。 因此,当我单击“后退”按钮时,片段将再次加载,而不是退出或加载先前的片段。
那么,如何防止片段多次添加到后堆栈?
答案 0 :(得分:0)
删除
transaction.addToBackStack(null);
或添加
transaction.disallowAddToBackStack();