【问题标题】:NestedFragment onActivityResult returns getActivity() NullNestedFragment onActivityResult 返回 getActivity() Null
【发布时间】:2015-08-18 09:42:56
【问题描述】:

我将嵌套片段添加到活动中,并将onActivityResult 调用到嵌套片段和父活动中。我能够将requestcode 从父活动返回到嵌套片段,但在onActivityResultgetActivity() 返回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)

【问题讨论】:

  • 请发布 stacfk 跟踪

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


【解决方案1】:

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

而不是使用

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

使用

setResult(resultCode, data);

【讨论】:

  • 您好 Rohit,谢谢您的帮助,您能告诉我如何调用 setResult 以及确切的位置吗?
猜你喜欢
  • 2012-07-25
  • 2013-12-29
  • 2019-04-04
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
相关资源
最近更新 更多