我正在将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)
答案 0 :(得分:0)
您正在通过创建新实例来重置您的片段,并且此实例未在任何地方加载,这就是null
获得getActivity()
的原因。
而不是使用
CACEditUserProfileFragment cacEditUserProfileFragment = new CACEditUserProfileFragment();
cacEditUserProfileFragment.onActivityResult(requestCode, resultCode, data);
使用
setResult(resultCode, data);