尝试从活动返回字节数组时遇到一些麻烦。返回码是:
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'(整数),则返回正常。
在尝试传回一个字节数组时,我有什么东西丢失了吗?
由于
答案 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()以传播到未处理的结果代码或所有的相应片段。