嘿!试试这个:
private OnBackStackChangedListener backStackListener = new OnBackStackChangedListener() {
@Override
public void onBackStackChanged() {
String name = "";
int position = getSupportFragmentManager().getBackStackEntryCount();
if(position!=0){
FragmentManager.BackStackEntry backEntry=getSupportFragmentManager().getBackStackEntryAt(position-1);
name=backEntry.getName();
}
if(position==0){
mainActionBar();
}
else if(name=="someWord"){
mainActionBar2();
}
else{
mainActionBar3();
}
}
};
getSupportFragmentManager().addOnBackStackChangedListener(backStackListener);
而且在交易中添加标签堆栈中是这样的:
getSupportFragmentManager().beginTransaction()
.replace(R.id.main, SomeFragment.newInstance(some argument))
.addToBackStack("someWord").commit();
我的问题不在于我的交易是否顺利,而是要知道何时完成。否则,我的视图显示和更改我的操作的菜单栏之间存在差距。 –
当你调用executePendingTransactions..how时,这个事务将会被强制完成,如果加载视图需要一些时间。为了找出这个问题,使用一个静态函数并从片段的onResume中调用它。 –
我认为这是一个有效的答案,即使它本身不是“事件”。 executePendingTransactions()会在事务完成之前阻塞*,并且在事务完成时调用其后的下一个命令,就像事件一样,甚至没有事件监听器的开销。 – auval