bytearray在额外的回报中

时间:2014-10-17 20:56:11

标签: android android-intent

尝试从活动返回字节数组时遇到一些麻烦。返回码是:

private void returnLocation(byte[] mapImage) {

    Intent intent = new Intent();       
    intent.putExtra("mapImage", mapImage);
    setResult(RESULT_OK, intent);

    finish();
}

编辑:这是我打电话并尝试在父活动中接收它的方式:

....
Intent i = new Intent(getActivity(), ChildActivity.class);
ParentFragment.this.startActivityForResult(i, 255);
...

public void onActivityResult(int requestCode,int resultCode,Intent data){

    if(requestCode == 255) {
        if(resultCode == Activity.RESULT_OK) {               
            mImage = data.getByteArrayExtra("mapImage");                
        }
    }
}

我在onActiviyResult上有一个断点,当我尝试返回一个字节数组时,它永远不会被击中。

但是,当尝试返回意图时,它会返回第一个活动(而不是调用它的活动)。我看不到任何暗示记录器出现问题的内容。

如果我将Extra值更改为'5'(整数),则返回正常。

在尝试传回一个字节数组时,我有什么东西丢失了吗?

由于

2 个答案:

答案 0 :(得分:1)

Android对Bundle的大小有限制,这是Intent在内部使用的内容。如果数据超出包大小,它将在日志中显示ERROR/JavaBinder(7881): !!! FAILED BINDER TRANSACTION !!,但不会引发异常。

尝试将字节数组写入临时文件并在Intent中传递文件名。

答案 1 :(得分:0)

我认为你是从片段中调用startActivityForResult(i,255)。

而不是调用ParentFragment.this.startActivityForResult(i,255);

你应该调用:startActivityForResult(i,255);

如果上述方法不起作用,请尝试以下方法:

由于托管您的片段的Activity获取了onActivityResult()结果,因此您需要覆盖活动的onActivityResult(),在您的片段中调用super.onActivityResult()以传播到未处理的结果代码或所有的相应片段。