-1

あるアクティビティから別のアクティビティに画像を送信する際の問題ですが、別のアクティビティにテキストを送信することはできます。ファイル名を含むソースコードを配置してください。可能であれば、間違いを確認して修正してください。過去 2 日間この問題に直面しているため、必要なコードを書き留めてください。 、私はこの質問をstackoverflowで3回提出しましたが、良い答えが得られません。誰かが私がする必要がある正しいことを書き、必要なコードを書いてください。しかし、ここに私のコードをいくつか置いています:

MainActivity コード:

 list.setOnItemClickListener(new OnItemClickListener() {

            public void onItemClick(AdapterView<?> parent, View view,
                    int position, long id) {
             // getting values from selected ListItem
                String title = ((TextView) view.findViewById
          (R.id.title)).getText().toString();
                String artist = ((TextView) view.findViewById
          (R.id.artist)).getText().toString();
                String duration = ((TextView) view.findViewById
          (R.id.duration)).getText().toString();
                byte[] image = null;
                Bitmap thumb_url = BitmapFactory.decodeByteArray
          (image, 0, image.length);


            //  Bitmap bMap = BitmapFactory.decodeByteArray
          (array, 0, array.length);

                // Starting new intent
                Intent in = new Intent
          (getApplicationContext(),    SingleMenuItemActivity.class);
                in.putExtra(KEY_TITLE, title);
                in.putExtra(KEY_ARTIST, artist);
                in.putExtra(KEY_DURATION, duration);
                in.putExtra(KEY_THUMB_URL, thumb_url);
                startActivity(in);

            }
        });     
    }   
    }

受信アクティビティ コード:

public class SingleMenuItemActivity  extends Activity {

// XML node keys
private static final String KEY_TITLE = "title";
private static final String KEY_ARTIST = "artist";
private static final String KEY_DURATION = "duration";
private static final String KEY_THUMB_URL = "thumb_url";
@Override
public void onCreate(Bundle savedInstanceState) {
    super.onCreate(savedInstanceState);
    setContentView(R.layout.single_list_item);

    // getting intent data
    Intent in = getIntent();

    // Get XML values from previous intent
    String title = in.getStringExtra(KEY_TITLE);
    String artist = in.getStringExtra(KEY_ARTIST);
    String duration = in.getStringExtra(KEY_DURATION);

    ImageView image = (ImageView)findViewById(R.id.thumb_url);
    Object thumb_url = null;
    View bitmap = null;
    bitmap.setBackgroundResource((Integer) thumb_url);   
    // Displaying all values on the screen
    TextView lblName = (TextView) findViewById(R.id.name_label);
    TextView lblCost = (TextView) findViewById(R.id.email_label);
    TextView lblDesc = (TextView) findViewById(R.id.mobile_label);

   //what code to write for image here 

    lblName.setText(title);
    lblCost.setText(artist);
    lblDesc.setText(duration);

}
 }

XML ファイル コード:

    <ImageView     
        android:id="@+id/thumb_url"   
        android:layout_width="50dip"
        android:layout_height="50dip"
        android:src="@drawable/rihanna"/>


   <TextView android:id="@+id/name_label"
        android:layout_width="fill_parent"
        android:layout_height="wrap_content"
        android:textSize="25dip"
        android:textStyle="bold"
        android:paddingTop="10dip"
        android:paddingBottom="10dip"
        android:textColor="#43bd00"/>

      <TextView android:id="@+id/email_label"
        android:layout_width="fill_parent"
        android:layout_height="wrap_content"
        android:textColor="#acacac"/>

    <TextView android:id="@+id/mobile_label"
        android:layout_width="fill_parent"
        android:layout_height="wrap_content"
        android:textStyle="bold"/>
 </LinearLayout>
4

3 に答える 3

1

誤解されているかもしれませんが、意図的に渡そうとするオブジェクトのサイズには制限があると思います(失敗したバインダートランザクションエラー?)。

最適な方法は、この画像をどこかに保存し(メモリまたはディスクキャッシュ)、画像リンクのみをアクティビティに渡すことです。これにより、画像がキャッシュから取得されます。2番目のアクティビティが再開した場合でも、生のビットマップを操作しなくても、リンクをどこかに(onSaveInstanceState)簡単に保存できます。

于 2012-09-25T10:49:27.187 に答える
0

これを試して

1.1。

Intent in = new Intent(your activity.this、SingleMenuItemActivity.class);を使用します。

それ以外の

Intent in = new Intent(getApplicationContext()、SingleMenuItemActivity.class);

2.2。

Intent in = getIntent();

    // Get XML values from previous intent
    String title = in.getStringExtra(KEY_TITLE);
    String artist = in.getStringExtra(KEY_ARTIST);
    String duration = in.getStringExtra(KEY_DURATION);
    Bitmap bitmap =(Bitmap) in.getParcelableExtra(KEY_THUMB_URL);

    ImageView image = (ImageView)findViewById(R.id.thumb_url);


    // Displaying all values on the screen
    TextView lblName = (TextView) findViewById(R.id.name_label);
    TextView lblCost = (TextView) findViewById(R.id.email_label);
    TextView lblDesc = (TextView) findViewById(R.id.mobile_label);

    image.setImageBitmap(bitmap); 

    lblName.setText(title);
    lblCost.setText(artist);
    lblDesc.setText(duration);

}
于 2012-09-25T10:49:30.767 に答える
0

Bitmap は Parcelable を実装しているため、インテントでいつでも渡すことができます。

Intent in = new Intent
      (getApplicationContext(),    SingleMenuItemActivity.class);
            in.putExtra(KEY_TITLE, title);
            in.putExtra(KEY_ARTIST, artist);
            in.putExtra(KEY_DURATION, duration);
            in.putExtra(KEY_THUMB_URL, thumb_url);
            startActivity(in);

もう一方の端でそれを取得します。

Bitmap bitmap = (Bitmap) intent.getParcelableExtra("BitmapImage");
image.setImageBitmap(bitmap); 
于 2012-09-25T10:50:38.957 に答える