10

シナリオ: MainActivity.javaOtherPageForFragments.javaおよびオンになっているフラグメントがあります。OtherPageForFragments.java

ではMainActivity.java、アクティビティを開始して結果を取得する次のコードを記述しました。

onActivityResult(int requestCode, int resultCode, インテントデータ)

startActivityForResult(new Intent(this, OtherPageForFragments.class),REQUEST_CODE_MAP);

フラグメントクラスのonDestroy()中で、私はこれを書きました:

public void onDestroyView() {
        // TODO Auto-generated method stub
        super.onDestroyView();
        mlocManager.removeUpdates(this);
        Intent intent = new Intent();
        intent.putExtra("Latitude", passLatLng.latitude);
        intent.putExtra("Longitude", passLatLng.longitude);
        getActivity().setResult(Activity.RESULT_OK, intent);
        getActivity().finish();
    }

今、私はMainActivityクラスで私の結果が欲しいです。したがって、onActivityResultメソッドに次のコードを記述しました。

if (resultCode == Activity.RESULT_OK && requestCode == REQUEST_CODE_MAP)
        {
            tost("2");
            double lat=data.getExtras().getDouble("Latitude");
            double lng=data.getExtras().getDouble("Longitude");
            tost(lat + " -- " + lng);
        }

問題:resultCode返されるのは ではなくActivity.RESULT_OKIntent私が取得するのはnullです。

何をすべきか?ありがとう

4

5 に答える 5

14
getActivity().setResult(Activity.RESULT_OK, intent);
getActivity().finish();

このコードは onDestroy に含めるべきではありません。onDestroy は、アクティビティが既に終了し、onActivityResult が呼び出された後に発生します。

このコードは、戻るキーが押されたとき、または閉じるボタン onClick のように、アクティビティ/フラグメントを閉じるコードで必要です。

于 2013-07-03T09:50:32.240 に答える
4

これを試して:

Intent data = new Intent();
intent.putExtra("Latitude", passLatLng.latitude);
intent.putExtra("Longitude", passLatLng.longitude);
if (getParent() == null) {
    setResult(Activity.RESULT_OK, data);
} else {
    getParent().setResult(Activity.RESULT_OK, data);
}
getActivity().finish();
于 2013-07-03T09:36:29.460 に答える
4

両方のアクティビティの起動モードを明確にする必要があるかもしれません。アクティビティ マニフェスト ファイルに「singleTop」... 属性がある場合、通常は「標準」にする必要があります。あなたはもっと注意を払う必要があります。

于 2014-10-24T15:52:59.687 に答える
-1

setResult() の前にメソッド finish() が呼び出されます。

このように onBackPressed() メソッドをオーバーライドしてみてください

override fun onBackPressed() {
    setResult(RESULT_OK)
    super.onBackPressed()
}
于 2020-10-28T16:34:13.107 に答える