我正在尝试从一个活动向另一个活动发送一个byte []。在接收活动中,在获得意图附加功能后,byte []似乎为null。任何想法?
感谢。
Button save = (Button)findViewById(R.id.save);
save.setOnClickListener(new OnClickListener() {
@Override
public void onClick(View arg0) {
touchView.isSaved = true;
Bundle bundle = new Bundle();
bundle.putByteArray("byteArr", touchView.data);
Intent intent = new Intent(mContext, SavePic.class);
intent.putExtra(bundle );
startActivity(intent);
}}) ;
public void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.savepic);
final EditText edittext = (EditText) findViewById(R.id.edittext);
edittext.setText("");
edittext.setOnKeyListener(new OnKeyListener() {
public boolean onKey(View v, int keyCode, KeyEvent event) {
// If the event is a key-down event on the "enter" button
if ((event.getAction() == KeyEvent.ACTION_DOWN) &&
(keyCode == KeyEvent.KEYCODE_ENTER)) {
// Perform action on key press
Bundle extras = getIntent().getExtras();
byte [] arr = extras.getByteArray("byteArr");
if(arr != null){
Log.e("xxxxxx", "********* arr not null");
}else{
Log.e("xxxxxx", "********* arr is null");
}
final Bitmap mCBitmap2 = BitmapFactory.decodeByteArray(arr, 0, arr.length);
[更新] 我已经改变了键值,所以不是相同的数据/ bytrArr,现在的意图只是传递一个Bundle
答案 0 :(得分:8)
键的值不是你的问题。您没有以与放入数据相同的方式检索数据。
在代码的第一部分中,您将一个byte []置于Bundle
内,然后将Bundle
放入Intent附加内容中。这意味着键“data”处的EXTRA是Bundle,而不是byte []。您无需以这种方式插入附加内容。只需执行intent.putExtra("byteArr", touchView.data)
即可将字节[]作为Extra。
执行此操作,您将能够在代码的第二部分中使用getIntent().getByteArrayExtra("byteArr")
检索字节[]。
最后,作为旁注,如果您有多个额外内容,您想要应用一个调用,您可以将每个附加到一个Bundle中,然后调用Intent.putExtras(bundle)
以放置来自Bundle的所有数据单独进入意图。但这与将Bundle添加为额外内容并不相同。
HTH
答案 1 :(得分:0)
不要为这两个额外提供相同的密钥名称。给出一个不同的名字。
只需致电intent.putExtra(bundle);
即可将捆绑包放入意图中。
答案 2 :(得分:0)
替换
intent.putExtra(“data”,bundle);
带
intent.putExtras(bundle);