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是在同一线程上调用的