将结果ResultInfo {who = null,request = 129742,result = -1,data = Intent {(has extras)}}传递给活动失败

时间:2016-05-04 08:33:41

标签: android android-fragments android-intent bytearray

我有一个片段,其中包含要发送到另一个活动的数据。从intent中发送和检索一个额外内容正在工作,但不适用于其他字节数组。请调查一下。

片段类

        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);

MAIN2ACTIVITY

    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)'在空对象引用上

2 个答案:

答案 0 :(得分:0)

您也可以尝试这样..

 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);
}

经过测试肯定会帮助你......

答案 1 :(得分:0)

根据您在评论中发布的错误

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时出错的原因。尝试检查此功能,也可以调试器进行确认。