我有一个BottomNavigation(3项目)的应用程序。项目1载入片段1,项目2载入片段2和项目3载入片段3.当在BottomNavigation中选择一个项目时,该项目的视图保持蓝色并且文本更大。我实现了onBackPressed,因为它支持片段历史(BackStack)。但是,当我支持时,BottomNavigation中的视图是stoppe。所以,如果我在片段3中,并且按回按钮并且它返回到片段2,BottomNavigationView显示我在片段3中,并且如果我再次按下返回按钮,我将转到fragment1,但BottomNavigationView不会不会更新,它会保留在片段3中。屏幕快照将显示我在说什么。 对不起我的坏英语和我的不好解释。BottomNavigation项目Selected动画onBackPressed
MainActivity.java
public class MainActivity extends AppCompatActivity {
private TextView mTextMessage;
private BottomNavigationView.OnNavigationItemSelectedListener mOnNavigationItemSelectedListener
= new BottomNavigationView.OnNavigationItemSelectedListener() {
@Override
public boolean onNavigationItemSelected(@NonNull MenuItem item) {
Fragment selectedFragment = null;
switch (item.getItemId()) {
case R.id.navigation_home:
selectedFragment = Fragment1.newInstance();
getSupportFragmentManager().beginTransaction().replace(R.id.content, selectedFragment).addToBackStack(null).commit();
return true;
case R.id.navigation_dashboard:
selectedFragment = Frament2.newInstance();
getSupportFragmentManager().beginTransaction().replace(R.id.content, selectedFragment).addToBackStack(null).commit();
return true;
case R.id.navigation_notifications:
selectedFragment = Fragment3.newInstance();
getSupportFragmentManager().beginTransaction().replace(R.id.content, selectedFragment).addToBackStack(null).commit();
return true;
}
return false;
}
};
@Override
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.activity_main);
BottomNavigationView navigation = (BottomNavigationView) findViewById(R.id.navigation);
navigation.setOnNavigationItemSelectedListener(mOnNavigationItemSelectedListener);
}
@Override
public void onBackPressed() {
if (getFragmentManager().getBackStackEntryCount() > 0) {
getFragmentManager().popBackStack();
} else {
super.onBackPressed();
}
}
对不起延迟回复。所以最简单的方法是当后退按钮被按下时,它总是会回到片段1?! –
@TonyStarkus根据指导原则,后按应该做任何系统默认设置,并完全忽略底部导航和/或片段。所以可能会结束你的活动。 –