我使用加载Activity
和Fragment List
的{{1}}。 Fragment Detail
在打开时以应用程序方式更改工具栏标题。当用户离开Fragment D
时,返回Fragment D
我想将Fragment L
重置为原始标题。
以下是我在toolbar
中添加的代码,用于检查mainActivity
是否已关闭。
Fragment D
堆栈跟踪说我无法在空对象引用上调用 getSupportFragmentManager().addOnBackStackChangedListener(new android.support.v4.app.FragmentManager.OnBackStackChangedListener() {
@Override
public void onBackStackChanged() {
Log.d("backstackbug", "back stack count = " + getSupportFragmentManager().getBackStackEntryCount());
if(getSupportFragmentManager().getBackStackEntryCount()>0) {
} else {
((ListFragment) getSupportFragmentManager().findFragmentByTag("LIST_F_TAG")).resetToolbar();
}
}
});
。 (我在移动设备上会发布整个跟踪)。
我不知道如果它位于后栈中,ListFragment.resetToolbar()
如何为空。
交易:
ListFragment
答案 0 :(得分:0)
我认为你颠倒了if块。试试这个
@Override
public void onBackStackChanged() {
Log.d("backstackbug", "back stack count = " + getSupportFragmentManager().getBackStackEntryCount());
if (getSupportFragmentManager().getBackStackEntryCount() > 0) {
ListFragment listFragment = (ListFragment) getSupportFragmentManager().findFragmentByTag("LIST_F_TAG");
if (listFragment != null) {
listFragment.resetToolbar();
}
}
}
答案 1 :(得分:0)
我认为问题是你没有将片段添加到backstack
fragmentTransection.addToBackStack(fragmentTag);
在提交之前执行此步骤