348

フラグメントから新しいアクティビティを開始しています

startActivityForResult(intent, 1);

フラグメントの親アクティビティで結果を処理したい場合:

@Override
protected void onActivityResult(int requestCode, int resultCode, Intent data) {
    Log.d(TAG, "onActivityResult, requestCode: " + requestCode + ", resultCode: " + resultCode);
    if (requestCode == 1) {
        // bla bla bla
    }
}

問題は、requestCode私が投稿したばかりの を取得できなかったことstartActivityForResult()です。

0x40001などのようなものを取得0x20001し、ランダムな上位ビットが設定されました。ドキュメントはこれについて何も言いません。何か案は?

4

6 に答える 6

904

から電話startActivityForResult()していますFragment。これを行うと、はを所有するrequestCodeによって変更されます。ActivityFragment

resultCodeアクティビティで正しいものを取得したい場合は、これを試してください:

変化する:

startActivityForResult(intent, 1);

に:

getActivity().startActivityForResult(intent, 1);
于 2012-05-12T14:13:31.563 に答える
2

これで(オーバーライドする場合)
super.onActivityResult(requestCode, resultCode, data)
inを定義することもできますActivityonActivityResult

@Override
protected void onActivityResult(int requestCode, int resultCode, Intent data) {
    switch (requestCode) {

        ...

        default:
            super.onActivityResult(requestCode, resultCode, data);
    }
}

startActivityForResult(intent, requestCode)そしてあなたの中に電話するFragment

于 2016-08-06T13:52:08.917 に答える