Android 如何等待片段被删除

Android 如何等待片段被删除,android,android-fragments,fragmenttransaction,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 res

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

公共抽象intcommit()

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


您可以尝试使用片段的
ondattached()
回调。无论何时将其从活动中移除,都将调用该函数

如果使用片段的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.
}
使用onAttach()检查片段何时附加到活动,使用onAttach()检查片段何时解除附加到活动

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

@Override
public void onDetach() {
    super.onDetach();
    synchronized (mLock) {
        mReady = false;
    }
}

在您的代码中,
synchronized(mLock)
用于什么?如果可能的话,请添加一些代码。谢谢。这与刷新或非异步任务有关。例如,如果片段被删除,但后台任务在此状态下完成,它将尝试更新视图,例如textView.setText(newStringValue)。在这种情况下,如果mReady为false,请避免这种行为。您不需要同步,因为OnDetch和onPostExecute是在同一线程上调用的