Java 安卓可以';无法从intent获取字节数组
我正在尝试将字节[]从一个活动发送到另一个活动。在Receiving活动中,字节[]在获取INTERT extras后似乎为空。有什么想法吗 谢谢Java 安卓可以';无法从intent获取字节数组,java,android,android-intent,bundle,Java,Android,Android Intent,Bundle,我正在尝试将字节[]从一个活动发送到另一个活动。在Receiving活动中,字节[]在获取INTERT extras后似乎为空。有什么想法吗 谢谢 Button save = (Button)findViewById(R.id.save); save.setOnClickListener(new OnClickListener() { @Override public void onClick(View arg0) {
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);
}}) ;
[更新]
我已经更改了键值,使它们不是相同的数据/bytrArr,而且意图现在只传递一个Bundle不要给这两个额外项赋予相同的键名。给一个不同的名字 只需调用
intent.putExtra(bundle)代码>用于将捆绑包放入目的地。替换
intent.putExtra(“数据”,捆绑包)
与
意向。额外支出(捆绑)
钥匙的价值不是你的问题。您检索数据的方式与放入数据的方式不同
在代码的第一部分中,您将在捆绑包
中放入一个字节[],然后将该捆绑包
放入Intent extras。这意味着键“data”处的额外值是一个Bundle,而不是字节[]。您不需要以这种方式插入额外内容。只需执行intent.putExtra(“byteArr”,touchView.data)
即可将字节[]作为额外字符插入
这样,您将能够使用代码第二部分中的getIntent().getByteArrayExtra(“byteArr”)
检索字节[]
最后,作为一个补充说明,如果您确实有多个额外数据要在一次调用中应用,那么您可以将每个额外数据放入一个包中,然后调用Intent.putexts(Bundle)
,将包中的所有数据分别放入Intent。但这与将该包作为额外包添加本身并不相同
HTHhi按照您的建议修改了代码,但它仍然会在arr阵列上抛出NPE。hi,只是再次测试它,您是正确的。这与我的代码没有在第一次启动应用程序时使用数据设置数组有关。谢谢
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);