我有一个包含动态片段的活动。我需要在删除片段之后运行一些代码但异步执行remove(myFragment).commit()
并且我不知道该片段何时被删除。这是我的代码:
final FragmentTransaction ft = getFragmentManager().beginTransaction();
ft.remove(myFragment).commit();
//wait until the fragment is removed and then execute rest of my code
来自文档:
public abstract int commit()
计划此交易的提交。提交不会发生 立即;它将被安排为主线程上的工作 下次线程准备就绪时完成。
答案 0 :(得分:4)
如果您使用片段的onDetach方法来调用活动并告诉它已完成,该怎么办?
class MyFrag extends Fragment {
private Activity act;
@Override
public void onAttach(Activity activity) {
act = activity;
}
@Override
public void onDetatch() {
act.fragGone();
}
}
在活动中:
public fragGone() {
//do something, update a boolean, refresh view, etc.
}
答案 1 :(得分:2)
您可以尝试使用片段的onDetached()
回调。只要从Activity中删除它,就会调用它。
答案 2 :(得分:1)
使用onAttach()检查片段何时附加到Activity,并使用onDettach()检查片段何时被释放到活动中。
使用onDettach(),您还可以通过以下方式检查是否更新视图,数据等:
@Override
public void onDetach() {
super.onDetach();
synchronized (mLock) {
mReady = false;
}
}