Android,在onActivityResult方法中为变量赋值



我正在尝试从我的onActivityResult方法中检索一些信息,在我的情况下是用户在子活动中选择的图片,我相信它工作正常,我遇到的问题是当我尝试将该图片(以字节数组的形式)分配给我在主要活动中的变量时。我正在尝试在onClick方法中使用该变量,但是由于某种原因,当我尝试使用该变量时,它的值始终为空。可能会发生什么?这是代码:

poptions.setOnItemClickListener(new OnItemClickListener(){
        @Override
        public void onItemClick(AdapterView<?> arg0, View view, int pos, long id) {
            final Intent i;
            switch(pos){
            // Adjunta imagen
            case 0:
                i = new Intent(Intent.ACTION_GET_CONTENT);
                i.setType("image/jpeg");
                startActivityForResult(i,1);
                //Toast.makeText(view.getContext(), "MIERDA!!", 30).show();
                break; // more cases below, not relevant to my question....
                }
        }
    });

我的活动结果方法:

编辑:解决方案是改变

if(resultCode==1)

自:

if(resultCode==RESULT_OK)

事实证明,RESULT_OK实际上等于 -1。

@Override
protected void onActivityResult(int requestCode, int resultCode, Intent pic){
    super.onActivityResult(requestCode, resultCode, pic);
    if(resultCode==1){
        Uri selectedpic = pic.getData();
        try {
            Bitmap bitmappic = MediaStore.Images.Media.getBitmap(
                    this.getContentResolver(), 
                    selectedpic);
            ByteArrayOutputStream picstream = new ByteArrayOutputStream();
            bitmappic.compress(Bitmap.CompressFormat.JPEG, 100, picstream);
            setPicture(picstream.toByteArray());
        } catch (FileNotFoundException e) {
            // TODO Auto-generated catch block
            e.printStackTrace();
        } catch (IOException e) {
            // TODO Auto-generated catch block
            e.printStackTrace();
        }
    }
}

我的onClickListener方法,我正在尝试使用上面设置的图片。

        btnSend.setOnClickListener(new OnClickListener(){
            @Override
            public void onClick(View v) {
                Bundle usrpostData = new Bundle();
                if(txtMsg.getText().toString().equals("")){
                    Toast.makeText(v.getContext(), "MSG", 10).show();
                }else{
                    String msg = txtMsg.getText().toString();
                    usrpostData.putString("message", msg);
                    if(getPicture()==null){
                        Toast.makeText(v.getContext(),"NULL",30).show();
                    }else{
                        try {
                            // do something with the picture...
                        } catch (FileNotFoundException e) {
                            e.printStackTrace();
                        } catch (MalformedURLException e) {
                            e.printStackTrace();
                        } catch (IOException e) {
                            e.printStackTrace();
                        }
                    }
                }
            }
        });

如您所见,我做了一个小测试,getPicture 方法总是返回 null,我尝试了 .equals 而不是 ==,它使我的应用程序崩溃。任何帮助不胜感激

解决方案是改变

if(resultCode==1)

自:

if(resultCode==RESULT_OK)

事实证明,RESULT_OK实际上等于 -1。

相关内容

  • 没有找到相关文章

最新更新