0

onActivityResult メソッドから情報を取得しようとしています。私の場合は、ユーザーがサブアクティビティで選択した画像です。問題なく動作していると思います。問題があるのは、その画像を割り当てようとしたときです (バイト配列の形式) を、メインのアクティビティにある変数に変換します。その変数を onClick メソッドで使用しようとしていますが、何らかの理由でその変数を使用しようとすると、値が常に null になります。何が起こっている可能性がありますか?コードは次のとおりです。

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....
                }
        }

    });

私の onActivityResult メソッド:

編集:解決策は変更することでした

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();
        }

    }

}

上記の setPicture メソッドによって設定された画像を使用しようとしている 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 を試したところ、アプリがクラッシュしました。どんな助けでも大歓迎です

4

1 に答える 1

0

解決策は変更することでした

if(resultCode==1)

に:

if(resultCode==RESULT_OK)

RESULT_OK は実際には -1 に等しいことがわかります。

于 2012-05-05T16:13:13.660 に答える