Android:setResult无法正常工作

P R*_*ant 8 java android android-intent

场景:我有一个MainActivity.java,OtherPageForFragments.java和片段,其中上OtherPageForFragments.java

MainActivity.java,我编写了以下代码来启动一个活动并获得结果

onActivityResult(int requestCode,int resultCode,Intent data)

startActivityForResult(new Intent(this, OtherPageForFragments.class),REQUEST_CODE_MAP);
Run Code Online (Sandbox Code Playgroud)

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();
    }
Run Code Online (Sandbox Code Playgroud)

现在,我希望我的成绩在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);
        }
Run Code Online (Sandbox Code Playgroud)

问题:resultCode返回的不是Activity.RESULT_OK,Intent我得到的是null.

该怎么办?谢谢

小智 10

getActivity().setResult(Activity.RESULT_OK, intent);
getActivity().finish();
Run Code Online (Sandbox Code Playgroud)

此代码不应该在onDestroy中.onDestroy在活动完成后发生,并且调用了onActivityResult.

此代码需要在关闭活动/片段的代码中,例如按下后退键或onClick上的关闭按钮


Laz*_*nja 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();
Run Code Online (Sandbox Code Playgroud)