[英]Doesn't change fragment backstack size when I press back button in Actvity
這是我的代碼:
FragmentManager fragmentManager = getSupportFragmentManager();
try {
FragmentTransaction fragmentTransaction = fragmentManager.beginTransaction();
fragmentTransaction.replace(R.id.container, fragment);
fragmentTransaction.addToBackStack(null);
fragmentTransaction.commitAllowingStateLoss();
} catch (Exception e) {
e.printStackTrace();
}
當我添加第一個片段時,我的方法getSupportFragmentManager().getBackStackEntryCount()
返回0。
當我添加第二個片段時, getBackStackEntryCount()
返回1,但是當我按下返回按鈕時, getBackStackEntryCount()
仍然返回1。
為什么?
UPD-
@Override
public void onBackPressed() {
super.onBackPressed();
updateToolbar(); // here I check backstackCount and update Toolbar
}
UPD2-
private void updateToolbar() {
if (getSupportFragmentManager().getBackStackEntryCount()() > 0) {
showBackButtonOnToolBar();
} else {
showProfileButtonOnToolBar();
}
}
你將不得不調用popBackStack()
從onBackPressed()
@Override
public void onBackPressed()
{
if (getSupportFragmentManager().getBackStackEntryCount() > 0)
{
getSupportFragmentManager().popBackStack();
}
else
{
super.onBackPressed();
}
}
更新:
添加您的行updateToolbar();
下面在if語句中彈出調用。
答案與Sarthak的答案相似,但是不必打電話:
if (getSupportFragmentManager().getBackStackEntryCount() > 0) {
getSupportFragmentManager().popBackStack();
}
else {
super.onBackPressed();
}
調用您的片段管理器的實例,即fragmentManager
像這樣:
if (fragmentManager.getBackStackEntryCount() > 0) {
fagmentManager.popBackStack();
}
else {
super.onBackPressed();
}
更新:
最好創建一個FragmentManager
字段,在活動的onCreate
中對其進行初始化,然后在所有片段事務中使用該字段,並添加到堆棧中,依此類推。
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.