lop*_*ael 36 android listener fragment
FragmentTransaction完成后是否可以有一个事件?
FragmentTransaction ft = getSupportFragmentManager().beginTransaction();
ft.replace(R.id.content_frame, fragment).commit();
Run Code Online (Sandbox Code Playgroud)
事实上,我为我的应用程序使用抽屉,并且我想invalidateOptionsMenu();在事务完成时触发以更改操作栏的菜单.
Eld*_*abu 51
您无需等待片段事务完成,您可以调用
getSupportFragmentManager().executePendingTransactions();
Run Code Online (Sandbox Code Playgroud)
在commit()函数调用之后.
这将确保交易完成.
Mik*_*eps 11
喜!试试这个:
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);
Run Code Online (Sandbox Code Playgroud)
并在事务中向backStack添加标记,如下所示:
getSupportFragmentManager().beginTransaction()
.replace(R.id.main, SomeFragment.newInstance(some argument))
.addToBackStack("someWord").commit();
Run Code Online (Sandbox Code Playgroud)
为时已晚,但这可能会有所帮助(放在这里供某人使用):
....
fragmentTransaction.replace(R.id.contentFrame, fragment);
fragmentTransaction.runOnCommit(new Runnable() // be carefull on this call. check documentation!!
{
@Override
public void run()
{
... do something... // this will run after fragment's on resume. you can check.
}
});
fragmentTransaction.commit();
Run Code Online (Sandbox Code Playgroud)
请检查 runOnCommit() 方法限制!
@Override
public void onResume() {
super.onResume();
getActivity().invalidateOptionsMenu();
}
Run Code Online (Sandbox Code Playgroud)
FragmentTransaction完成后,将调用Fragment的生命周期方法,如onResume()
仅供参考,片段可以有自己的菜单,请参阅http://developer.android.com/reference/android/app/Fragment.html#setHasOptionsMenu(boolean)
| 归档时间: |
|
| 查看次数: |
28826 次 |
| 最近记录: |