![](/img/trans.png)
[英]Android - update toolbar title in activity while handle back navigation with fragment
[英]Android setting fragment toolbar title
我在片段事務中遇到一些小錯誤。 當我打開多個片段並按返回按鈕,並且工具欄上顯示的標題錯誤時,就會出現問題。
例如,從我的Home -> Expenses fragment
,然后從費用片段中按返回按鈕,工具欄上顯示的標題是正確的。
但是,假設Home -> Expenses -> Incomes fragment
,然后從Incomes片段按返回按鈕,它將返回Home片段,但工具欄上顯示的標題將是'Expenses'而不是'Home'。
這是我為MainActivity設置的,它擴展了AppCompatActivity:
// inside onCreate() put all these code
//Setting Navigation View Item Selected Listener to handle the item click of the navigation menu
navigationView.setNavigationItemSelectedListener(new NavigationView.OnNavigationItemSelectedListener() {
// This method will trigger on item Click of navigation menu
@Override
public boolean onNavigationItemSelected(MenuItem menuItem) {
//Checking if the item is in checked state or not, if not make it in checked state
if(menuItem.isChecked()) menuItem.setChecked(false);
else menuItem.setChecked(true);
//Closing drawer on item click
drawerLayout.closeDrawers();
//Check to see which item was being clicked and perform appropriate action
final Bundle bundle = new Bundle();
switch (menuItem.getItemId()){
case R.id.home:
getSupportActionBar().setTitle("Home");
return true;
case R.id.expenses:
return true;
case R.id.incomes:
return true;
case R.id.history:
return true;
case R.id.setting:
return true;
}
}
});
然后在每個擴展Fragment的片段中,設置標題並覆蓋后退按鈕:
public View onCreateView(LayoutInflater inflater, ViewGroup container, Bundle savedInstanceState) {
View v = inflater.inflate(R.layout.activity_expense,container,false);
((AppCompatActivity)getActivity()).getSupportActionBar().setTitle("Expenses");
// override on back key pressed back to main fragment
v.setFocusableInTouchMode(true);
v.requestFocus();
v.setOnKeyListener(new View.OnKeyListener() {
@Override
public boolean onKey(View v, int keyCode, KeyEvent event) {
if( keyCode == KeyEvent.KEYCODE_BACK ) {
getFragmentManager().popBackStack(null, FragmentManager.POP_BACK_STACK_INCLUSIVE);
((AppCompatActivity)getActivity()).getSupportActionBar().setTitle("Home");
return true;
} else {
return false;
}
}
});
return v;
}
我什至添加了這一行((AppCompatActivity)getActivity()).getSupportActionBar().setTitle("Home");
單擊后退按鈕時設置標題,但沒有用。
嘗試這種方式:1.在您的活動中覆蓋onBackPress:
@Override public void onBackPressed() {
if (count == 0) {
super.onBackPressed();
}
else {
getSupportFragmentManager().popBackStack(null,FragmentManager.POP_BACK_STACK_INCLUSIVE);
}
}
(((AppCompatActivity)getActivity())。getSupportActionBar()。setTitle(“片段標題”); 只需將這一行放在onCreateView()片段中即可。
並且不要覆蓋片段中的后退按鈕。
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.