0

私は 1 つの Android アプリケーションを開発しました。

アプリは、xml 解析を使用して表示されたリスト ビューを実行しています。

以下のコードを使用しました。テキスト データはあるアクティビティから次のアクティビティに正常に渡されますが、画像はあるアクティビティから別のアクティビティに渡されません。

Androidアプリケーションで、あるアクティビティから次のアクティビティに画像を渡すにはどうすればよいですか?

これは最初のアクティビティです:

String title = ((TextView) view.findViewById(R.id.title)).getText().toString();
String duration = ((TextView) view.findViewById(R.id.duration)).getText().toString();
String artist = ((TextView) view.findViewById(R.id.artist)).getText().toString();
String image = ((ImageView) view.findViewById(R.id.list_image)).getImageMatrix().toString();
// Starting new intent
Intent in = new Intent(getApplicationContext(), SingleMenuItemActivity.class);
in.putExtra(KEY_TITLE, title);
in.putExtra(KEY_DURATION, duration);
in.putExtra(KEY_ARTIST, artist);
in.putExtra(KEY_THUMB_URL, image);
startActivity(in);

これが次のアクティビティです。

Intent in = getIntent();

// Get XML values from previous intent
String title = in.getStringExtra(KEY_TITLE);
String duration = in.getStringExtra(KEY_DURATION);
String artist = in.getStringExtra(KEY_ARTIST);
Bitmap bitmap =(Bitmap) in.getParcelableExtra(KEY_THUMB_URL);
// Displaying all values on the screen
TextView lblName = (TextView) findViewById(R.id.name_label);
TextView lblCost = (TextView) findViewById(R.id.cost_label);
TextView lblDesc = (TextView) findViewById(R.id.description_label);
ImageView image = (ImageView)findViewById(R.id.image_label);
image.setImageBitmap(bitmap); 
lblName.setText(title);
lblCost.setText(duration);
lblDesc.setText(artist);

編集:

以下のコードのように最初のアクティビティを変更しました。

String image = ((ImageView) view.findViewById(R.id.list_image)).getImageMatrix().toString();
Intent in = new Intent(getApplicationContext(), SingleMenuItemActivity.class);
in.putExtra(KEY_THUMB_URL, image);

2 番目のアクティビティを次のように変更しました。

static final String KEY_THUMB_URL = "Image";
String Image = in.getStringExtra(KEY_THUMB_URL);
ImageLoader imageLoader = new ImageLoader(getApplicationContext());
ImageView thumb = (ImageView) findViewById(R.id.image_label);
imageLoader.DisplayImage(Image, thumb);

アプリを実行する必要がある後、空の画像のみが取得されることを意味します。

4

2 に答える 2

0

ビットマップをインテントに直接渡すことはできません。代わりに、ビットマップをバイト配列に変換してから、インテントを介してバイト配列を転送し、呼び出されたアクティビティでバイト配列をビットマップに変換する必要があります。

Bitmap bitmap = BitmapFactory.decodeResource(getResources(),"Image ID");
ByteArrayOutputStream bytes = new ByteArrayOutputStream();
bitmap.compress(Bitmap.CompressFormat.JPEG, 40, bytes); 

次に、画像を渡します

            intent.putExtra("imagepass", bytes.toByteArray());
             startActivity(intent);

その後、呼び出されたアクティビティ

    Bundle extras = getIntent().getExtras();
    byte[] byteArray = extras.getByteArray("imagepass");
    Bitmap bmp = BitmapFactory.decodeByteArray(byteArray, 0, byteArray.length);

    ImageView iv=(ImageView) findViewById(R.id.imgvw2);
    iv.setImageBitmap(bmp);
于 2013-02-21T07:02:39.160 に答える
0

アクティビティ間で Image を渡すには、まずイメージをビットマップに変換し、次にTHISを使用してそのビットマップを次のアクティビティに渡します。

于 2012-11-28T04:15:23.607 に答える