我在我的應用程序的主要活動中有一個導航抽屜。在活動的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。謝謝。