Java 安卓可以';无法从intent获取字节数组

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

我正在尝试将字节[]从一个活动发送到另一个活动。在Receiving活动中,字节[]在获取INTERT extras后似乎为空。有什么想法吗

谢谢

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。但这与将该包作为额外包添加本身并不相同


HTH

hi按照您的建议修改了代码,但它仍然会在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);