我一直在搜索和搜索并寻找好几天,但我似乎无法找到我做错的事情,所以你是我最后的希望!
我的第一个活动有多个图像。当我按下一个时,我想要打开第二个活动,只显示点击的图像。我试图将点击的图像转换为位图,然后使用意图发送它,以便我的第二个活动可以检索它。
这是我的第一个Activity的代码(位图....' drawable'用红色加下划线,因此是意图.....'这个,SubActivity.class&#39 )。我做错了什么?
public class MainActivity extends ActionBarActivity {
@Override
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.activity_main);
final ImageView imgview = (ImageView) findViewById(R.id.image);
imgview.setOnClickListener(new View.OnClickListener() {
@Override
public void onClick(View view) {
// Haal de drawable op uit de imageview
Drawable drawable = imgview.getDrawable();
// Zet de drawable om naar een ByteArray zodat we deze kunnen versturen met een intent
// want we kunnen niet zomaar een drawable in een intent gooien
Bitmap bitmap = BitmapFactory.decodeResource(drawable);
ByteArrayOutputStream baos = new ByteArrayOutputStream();
bitmap.compress(Bitmap.CompressFormat.PNG, 100, baos);
byte[] b = baos.toByteArray();
// Maak de intent aan en stuur de ByteArray mee waar de drawable in zit
Intent intent;
intent = new Intent(this,SubActivity.class);
intent.putExtra("witte_tulp_small", b);
startActivity(intent);
}
});
}
}
这是我第二个活动中的代码:
public class SubActivity extends Activity {
@Override
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.activity_sub);
// Intent uitlezen
Bundle extras = getIntent().getExtras();
byte[] b = extras.getByteArray("witte_tulp_small");
Bitmap bmp = BitmapFactory.decodeByteArray(b, 0, b.length);
ImageView image = (ImageView) findViewById(R.id.image);
image.setImageBitmap(bmp);
}
}
答案 0 :(得分:2)
位图为Parcelable
。您可以将parcelable对象放在bundle或intent
Intent intent = new Intent(this, SubActivity.class);
intent.putExtra("bitmap", bitmap);
并在另一端回读
Bitmap bitmap = (Bitmap) getIntent().getParcelableExtra("bitmap");
答案 1 :(得分:0)
您应该只将图像的源发送到另一个活动,这将重新创建图像视图
答案 2 :(得分:0)
如果两个活动都在同一个应用程序中,您只需传递drawable id:
在MainActivity
intent.putExtra("witte_tulp_small", R.id.image);
在SubActivity
:
@Override
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.activity_sub);
// Intent uitlezen
Bundle extras = getIntent().getExtras();
int resId = extras.getInt("witte_tulp_small");
ImageView image = (ImageView) findViewById(R.id.image);
image.setImageResource(resId);
}