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

ドキュメントから:

public 抽象 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() を使用してフラグメントがいつアクティビティにアタッチされたかを確認し、onDettach() を使用してフラグメントがいつアクティビティにデタッチされたかを確認します。

onDettach() を使用すると、次の方法でビューやデータなどを更新するかどうかを確認することもできます。

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