【问题标题】:Failure delivering result ResultInfo{who=null, request=129742, result=-1, data=Intent { (has extras) }} to activity将结果 ResultInfo{who=null, request=129742, result=-1, data=Intent { (has extras) }} 传递给活动失败
【发布时间】:2016-08-29 13:54:37
【问题描述】:

我有一个片段,其中包含要发送到另一个活动的数据。从意图中发送和检索一个额外内容是有效的,但不适用于其他字节数组。请仔细查看。

片段类

        String userId = profile.getId();
        Bitmap bitmap = getFacebookProfilePicture(userId);
        ByteArrayOutputStream stream = new ByteArrayOutputStream();
        bitmap.compress(Bitmap.CompressFormat.PNG, 100, stream);
        byte[] byteArray = stream.toByteArray();
        Intent myIntent = new Intent(getActivity(), Main2Activity.class);
        myIntent.putExtra("name",name);
        myIntent.putExtra("image",byteArray);
        getActivity().startActivity(myIntent);

主要活动

    Intent intent = getIntent();
    String name = intent.getExtras().getString("name");
    byte[] byteArray = intent.getExtras().getByteArray("image");
    Bitmap bmp = BitmapFactory.decodeByteArray(byteArray, 0, byteArray.length);

第三行 main2activity 抛出错误:将结果 ResultInfo{who=null, request=129742, result=-1, data=Intent { (has extras) }} 传递给活动失败

这似乎是主要错误 原因:java.lang.NullPointerException:尝试在空对象引用上调用虚拟方法 'boolean android.graphics.Bitmap.compress(android.graphics.Bitmap$CompressFormat, int, java.io.OutputStream)'

【问题讨论】:

  • 这是唯一的错误吗?你能发布完整的堆栈跟踪吗?
  • @varunkr 可能是这个原因: 引起:java.lang.NullPointerException:尝试调用虚拟方法'boolean android.graphics.Bitmap.compress(android.graphics.Bitmap$CompressFormat, int , java.io.OutputStream)' 在空对象引用上
  • 是的,这是主要错误
  • 你的名字是不是特别正确?

标签: android android-fragments android-intent bytearray


【解决方案1】:

你也可以这样试试..

 Bundle bundle = getIntent().getExtras();
if(bundle!=null){
 String name =bundle.getString("name");
    byte[] byteArray =getIntent().getByteArrayExtra("image");
    Bitmap bmp = BitmapFactory.decodeByteArray(byteArray, 0, byteArray.length);
}

经过测试,一定能帮到你……

【讨论】:

  • 除了空检查,还有什么不同?
  • @trigger..here..null 检查是主要的...我想在发布答案时加粗
  • @trigger...here Intent 接收器抛出异常我可以在这里看到 NullPointerException
  • 对不起。您的意思是说您测试了上面的代码并设法收到了 NPE,这就是您建议进行空值检查的原因吗? :)
  • 我明白了。你可以在你的帖子中提到这一点。 :)
【解决方案2】:

来自您在 cmets 中发布的错误

Caused by: java.lang.NullPointerException: Attempt to invoke virtual method 'boolean android.graphics.Bitmap.compress(android.graphics.Bitmap$CompressFormat, int, java.io.OutputStream)' on a null object reference

看起来错误出现在bitmap.compress 行,这意味着您以这种方式获得的位图为空。

Bitmap bitmap = getFacebookProfilePicture(userId);

这就是调用 bitmap.compress 时出错的原因。试试看这个功能,也可以放调试器确认。

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多