我在我的应用程序的主要活动中有一个导航抽屉。在活动的onCreate方法初始化我这样一个片段:Android导航抽屉错误的工具栏标题onResume
@Override
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.activity_main);
if (savedInstanceState == null) {
MenuItem menuItem = navigationView.getMenu().findItem(R.id.menu_history);
openFragment(menuItem);
}
public void openFragment(MenuItem menuItem){
Fragment newFragment = null;
switch (menuItem.getItemId()){
case R.id.menu_history :
newFragment = new HistoryFragment();
break;
//.....
}
if (newFragment != null){
//Replace content frame in activity_main.xml with newFragment
getSupportFragmentManager().beginTransaction()
.replace(R.id.content_frame, newFragment)
.commit();
menuItem.setChecked(true);
getSupportActionBar().setTitle(menuItem.getTitle());
}
drawerLayout.closeDrawers();
}
这一切运作良好,该片段在启动时会出现与工具栏是“历史”的标题。但是,当应用程序进入onPause,然后onResume工具栏标题从“历史”切换到应用程序名称。我怀疑这是用的onResume不开放的片段/恢复到以前的状态正确,因为当我添加以下行的onResume问题停止一个问题:
@Override
protected void onResume() {
super.onResume();
MenuItem menuItem = navigationView.getMenu().findItem(R.id.menu_history);
openFragment(menuItem);
}
这种解决方案似乎解决它,但是这意味着它每次应用程序恢复时都必须使用动画重新加载片段,这不是最佳选择。有想法该怎么解决这个吗?
如果有帮助,重新创建我发现有用的应用程序拆分屏幕的问题,因为它总是调用onResume。谢谢。