2

初めに。私はまだアンドロイドの新人です...私は2つのアクティビティ/レイアウトを持っています

  1. activity_main (Class Main.java) は、ユーザーがギャラリーから写真を選択できるようにします
  2. activity_upload (Class Upload.java) は、選択した画像を表示する必要があります。(将来的には、サーバーへのアップロードがあります)

私の問題は次のとおりです: activity_upload のビューに、選択した画像のプレビューが表示されません。変数「picturepath」があります。この変数は、「バンドル...」を使用して activity_upload で使用できるようにしようとしています

誰でも私を助けることができますか?ありがとうございました

私は今これを試しましたが、うまくいきません。

Main.java

 if (requestCode == RESULT_LOAD_IMAGE && resultCode == RESULT_OK && null != data) {
    Uri selectedImage = data.getData();
    String[] filePathColumn = { MediaStore.Images.Media.DATA };

    Cursor cursor = getContentResolver().query(selectedImage,
            filePathColumn, null, null, null);
    cursor.moveToFirst();

    int columnIndex = cursor.getColumnIndex(filePathColumn[0]);
    String picturePath = cursor.getString(columnIndex);
    cursor.close();
    Intent in = new Intent(Main.this, Upload.class);
    in.putExtra("Path", picturePath);
    startActivity(in);
}

Upload.java

@Override
protected void onActivityResult(int requestCode, int resultCode, Intent data) {
    super.onActivityResult(requestCode, resultCode, data);
        String picturePath = getIntent().getStringExtra("Path");
        ImageView imageView = (ImageView) findViewById(R.id.imgView);
        imageView.setImageBitmap(BitmapFactory.decodeFile(picturePath));        
    }
}
4

2 に答える 2

2

あなたの問題は、インテントを介して Upload クラスを明示的に呼び出す場所がないため、 Upload クラスが画像へのパスを認識しないことです。

アップロード アクティビティに切り替えるためのインテントを作成する必要があり、それにいくつかのデータをパックする必要があります。方法で達成できputExtra()ます。次に、クラスでデータを取得できます

getIntent().getStringExtra("key");

擬似コード:

Intent i = new Intent(Main.this, Upload.class);
i.putExtra("picPath", "<someValue>");
startActivity(i);
于 2013-03-23T07:45:36.130 に答える
0

私が見るいくつかの問題があります。まず、あなたがどのように取得することを期待しているのかわかりません

 String picturePath = ptarget.getString("Bilderpfad");

これが起こるためには、あなたは次のようなことをしなければならないでしょう

intent.putExtra("Bilderpfad", value)";

Intentあなたがこれに送るときActivity。第二に、あなたは呼び出しますが、これはあなたがこのクラスから始めて、呼び出されたクラスから呼び出すonActivityResult()ときにのみ呼び出されます。私が何かを見逃していない限り、あなたはINtent Docsに目を通す必要がありますIntentstartActivityForResult()setResult()

私はあなたが近いと思いますが、方法ActivitiesIntents作業に関するいくつかの重要な基本事項が欠けていると思います

于 2013-03-23T07:40:00.373 に答える