4

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

从文档中:

公共抽象 int提交()

安排此事务的提交。提交不会立即发生;它将被安排在主线程上的工作,以便在该线程下一次准备好时完成。

4

3 回答 3

5

如果您使用片段的 onDetach 方法来调用活动并告诉它完成了怎么办?

class MyFrag extends Fragment {

    private Activity act;

    @Override
    public void onAttach(Activity activity) {
        act = activity;
    }

    @Override
    public void onDetatch() {
        act.fragGone();
    }
}

在活动中:

public void fragGone() {
    //do something, update a boolean, refresh view, etc.
}
于 2013-05-30T18:23:53.817 回答
2

您可以尝试使用onDetached()片段的回调。每当它从其 Activity 中删除时,都会调用它。

于 2013-05-30T18:18:26.123 回答
1

使用 onAttach() 检查片段何时附加到 Activity 并使用 onDettach() 检查片段何时附加到 Activity。

使用 onDettach() 您还可以通过以下方式检查是否更新视图、数据等:

@Override
public void onDetach() {
    super.onDetach();
    synchronized (mLock) {
        mReady = false;
    }
}
于 2013-05-30T18:32:39.663 回答