目前,我的应用允许用户点击“默认头像图片”,然后从一组图片中进行选择。然后通过“startActivityForResult”将该图像返回到第一个活动。我的下一个任务是拍摄现在在第一个活动中设置的图像,并在用户按下“提交按钮”时将其发送到第三个活动。现在,我正在尝试下面的代码,但它不起作用,因为我不知道用户选择哪个图像,直到它被选中。任何人都可以帮助我吗?
findViewById(R.id.buttonSubmit).setOnClickListener(new View.OnClickListener() {
@Override
public void onClick(View v) {
Intent intent = new Intent(MainActivity.this, DisplayActivity.class);
Bitmap bitmap = BitmapFactory.decodeResource(getResources(), R.drawable.select_avatar);
intent.putExtra("IMAGE", bitmap);
startActivity(intent);
}
});
//second activity
Bitmap bitmap = intent.getParcelableExtra("Bitmap");
imageViewAvatar.findViewById(R.id.imageViewFinalAvatar);
imageViewAvatar.setImageBitmap(bitmap);
答案 0 :(得分:2)
您只需将ImageViewId用作整数值,然后传递即可。无需使用任何位图。
int imageID = R.drawable.select_avatar;
findViewById(R.id.buttonSubmit).setOnClickListener(new View.OnClickListener() {
@Override
public void onClick(View v) {
Intent intent = new Intent(MainActivity.this, DisplayActivity.class);
intent.putInt("image_id", imageID); // Integer Value
startActivity(intent);
}
});
//second activity
Intent intent = getIntent();
int imageIdValue = intent.getIntExtra("image_id", 0);
imageViewAvatar.setImageResource(0);
imageViewAvatar.setImageResource(imageIdValue);
答案 1 :(得分:1)
如果您需要在其他活动中收到 ImageView ,则可能会在您的应用未来中遇到可扩展性问题。
如果您在所选的第一个活动中显示了头像图片,那么该可绘制的选择内容可以保存在Shared Preferences等本地存储中,然后保存在第二个活动中以及您拥有的任何其他活动中在未来,您也可以从 SharedPreferences 中检索该值,例如:
存储您的Drawable idName :(您 DON' T 想要存储 int id ,因为如果您添加更多drawable并且以后打破您的应用,则ID会更改
int[] drawablesArray = {R.id.monkey, R.id.balloon};
int id = drawablesArray[imageSelectedIndex];
String idName = getResources().getResourceEntryName(id);
SharedPreferences preferences = PreferenceManager.getDefaultSharedPreferences(YourActivityName.this);
SharedPreferences.Editor editor = preferences.edit();
editor.putString("avatarPicture",idName);
editor.apply();
在第二个活动上检索您的Drawable idName :
SharedPreferences preferences = PreferenceManager.getDefaultSharedPreferences(YourActivityName.this);
int avatarPicture = preferences.getString("avatarPicture", "");
if(!avatarPicture.isEmpty())
{
imageView2ndActivity.setBackgroundResource(getResources().getIdentifier(idName, "drawable", getPackageName()));
}
希望它有所帮助。
答案 2 :(得分:0)
可能您错过了从其他活动获取结果的知识,请参阅official文档。 必须通过名为onActivityResult的方法(链接中的示例)调用必须接收信息的第二个Activity
@Override
protected void onActivityResult(int requestCode, int resultCode, Intent data) {
// Check which request we're responding to
if (requestCode == PICK_CONTACT_REQUEST) {
// Make sure the request was successful
if (resultCode == RESULT_OK) {
// The user picked a contact.
// The Intent's data Uri identifies which contact was selected.
// Do something with the contact here (bigger example below)
}
}
}