如何等待片段被删除

时间:2013-05-30 17:48:20

标签: android android-fragments fragmenttransaction

我有一个包含动态片段的活动。我需要在删除片段之后运行一些代码但异步执行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()

     

计划此交易的提交。提交不会发生   立即;它将被安排为主线程上的工作   下次线程准备就绪时完成。

3 个答案:

答案 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;
    }
}