当Intent为非null时,Android“失败传递结果ResultInfo”

时间:2011-11-14 02:46:49

标签: android nullpointerexception android-intent live-wallpaper

我的动态壁纸中有自定义图像首选项,允许用户从SD卡中选择图像作为背景。我从here获得了代码并且没有对其进行修改,因此除了变量或对象名称之外几乎完全相同。

我在开发控制台中得到了一些堆栈跟踪:

java.lang.RuntimeException: Failure delivering result ResultInfo{who=null, request=1, result=-1, data=Intent { dat=file:///mnt/sdcard/com.idunnolol.rageface/rage_fullpanel.png }} to activity {gilleland.software.pixelrain/gilleland.software.pixelrain.PixelRainSettings}: java.lang.NullPointerException
at android.app.ActivityThread.deliverResults(ActivityThread.java:3515)
at android.app.ActivityThread.handleSendResult(ActivityThread.java:3557)
at android.app.ActivityThread.access$2800(ActivityThread.java:125)
at android.app.ActivityThread$H.handleMessage(ActivityThread.java:2063)
at android.os.Handler.dispatchMessage(Handler.java:99)
at android.os.Looper.loop(Looper.java:123)
at android.app.ActivityThread.main(ActivityThread.java:4627)
at java.lang.reflect.Method.invokeNative(Native Method)
at java.lang.reflect.Method.invoke(Method.java:521)
at com.android.internal.os.ZygoteInit$MethodAndArgsCaller.run(ZygoteInit.java:858)
at com.android.internal.os.ZygoteInit.main(ZygoteInit.java:616)
at dalvik.system.NativeStart.main(Native Method)
Caused by: java.lang.NullPointerException
at gilleland.software.pixelrain.PixelRainSettings.getRealPathFromURI(PixelRainSettings.java:107)
at gilleland.software.pixelrain.PixelRainSettings.onActivityResult(PixelRainSettings.java:90)
at android.app.Activity.dispatchActivityResult(Activity.java:3890)
at android.app.ActivityThread.deliverResults(ActivityThread.java:3511)
... 11 more

我手机上没有这个例外。

我一直在搜索导致NullPointerException的原因,但我发现的大部分解决方案都涉及“ResultInfo {who = null,request = 1,result = -1,data = null}”。我得到的堆栈跟踪实际上有Intent数据...所以我无法弄清楚NullPointerException来自什么。

感谢任何和所有帮助。我可以提供任何必要的代码来帮助解决这个问题。 谢谢!

1 个答案:

答案 0 :(得分:1)

requestCode和resultCode是正确的,所以我猜问题是由于其中一个变量指针未在以下代码段中正确初始化:

Uri selectedImage = data.getData();   
String RealPath;
SharedPreferences customSharedPreference =        
getSharedPreferences(fingerflashpro.SHARED_PREFS_NAME, Context.MODE_PRIVATE); 
SharedPreferences.Editor editor = customSharedPreference.edit ();
RealPath = getRealPathFromURI (selectedImage);
editor.putString("image_custom", RealPath); 
editor.commit(); 

它可能与selectedImage或RealPath有关。注释掉大多数代码并逐行调试。