NestedFragment onActivityResult返回getActivity()Null

时间:2015-08-18 09:42:57

标签: android android-fragments onactivityresult android-nested-fragment

我正在将Nested片段添加到activity并将onActivityResult调用到嵌套片段和父活动中。我能够将requestcode从父活动返回到嵌套片段,但在onActivityResult之后,getActivity()返回null但在调用onActivityResult之前,getActivity()正在调用父活动正确。我不明白问题在哪里? 以下是我的代码:

父活动中的

onActivityResult

@Override
protected void onActivityResult(int requestCode, int resultCode, Intent data) {
    super.onActivityResult(requestCode, resultCode, data);
    CACEditUserProfileFragment cacEditUserProfileFragment = new CACEditUserProfileFragment();
    cacEditUserProfileFragment.onActivityResult(requestCode, resultCode, data);

}

以上代码适用于父级活动中的onActivityResult CACEditUserProfileFragment是我获得结果的地方。

这是我的日志猫

java.lang.RuntimeException: Failure delivering result ResultInfo{who=null, request=2, result=-1, data=Intent { dat=content://media/external/images/media/3984 (has extras) }} to activity {com.scispl.cloudacar/com.scispl.cloudacar.front_end_layer.controller.user_profile.CACProfileActivity}: java.lang.NullPointerException
            at android.app.ActivityThread.deliverResults(ActivityThread.java:3810)
            at android.app.ActivityThread.handleSendResult(ActivityThread.java:3853)
            at android.app.ActivityThread.access$1400(ActivityThread.java:174)
            at android.app.ActivityThread$H.handleMessage(ActivityThread.java:1369)
            at android.os.Handler.dispatchMessage(Handler.java:102)
            at android.os.Looper.loop(Looper.java:146)
            at android.app.ActivityThread.main(ActivityThread.java:5731)
            at java.lang.reflect.Method.invokeNative(Native Method)
            at java.lang.reflect.Method.invoke(Method.java:515)
            at com.android.internal.os.ZygoteInit$MethodAndArgsCaller.run(ZygoteInit.java:1291)
            at com.android.internal.os.ZygoteInit.main(ZygoteInit.java:1107)
            at dalvik.system.NativeStart.main(Native Method)
     Caused by: java.lang.NullPointerException
            at com.scispl.cloudacar.front_end_layer.controller.user_profile.CACEditUserProfileFragment.onActivityResult(CACEditUserProfileFragment.java:842)
            at com.scispl.cloudacar.front_end_layer.controller.user_profile.CACProfileActivity.onActivityResult(CACProfileActivity.java:369)
            at android.app.Activity.dispatchActivityResult(Activity.java:5790)
            at android.app.ActivityThread.deliverResults(ActivityThread.java:3806)
            at android.app.ActivityThread.handleSendResult(ActivityThread.java:3853)
            at android.app.ActivityThread.access$1400(ActivityThread.java:174)
            at android.app.ActivityThread$H.handleMessage(ActivityThread.java:1369)
            at android.os.Handler.dispatchMessage(Handler.java:102)
            at android.os.Looper.loop(Looper.java:146)
            at android.app.ActivityThread.main(ActivityThread.java:5731)
            at java.lang.reflect.Method.invokeNative(Native Method)
            at java.lang.reflect.Method.invoke(Method.java:515)
            at com.android.internal.os.ZygoteInit$MethodAndArgsCaller.run(ZygoteInit.java:1291)
            at com.android.internal.os.ZygoteInit.main(ZygoteInit.java:1107)
            at dalvik.system.NativeStart.main(Native Method)

1 个答案:

答案 0 :(得分:0)

您正在通过创建新实例来重置您的片段,并且此实例未在任何地方加载,这就是null获得getActivity()的原因。

而不是使用

CACEditUserProfileFragment cacEditUserProfileFragment = new CACEditUserProfileFragment();
cacEditUserProfileFragment.onActivityResult(requestCode, resultCode, data);

使用

setResult(resultCode, data);
相关问题