问题描述
感谢这个网站,我想出了如何在活动之间传递字符串值,但是我在传递图像时遇到了麻烦.我想要的是让用户单击一个按钮,该按钮打开图库并允许选择图片.然后我有另一个按钮,可以打开另一个显示 ImageView 的活动.我希望能够让 ImageView 的图像成为从上一个活动中选择的图像.
I figured out how to pass a String value between activites thanks to this site, however I'm having trouble passing an image. What I'm trying to to is have a user click a button that opens the gallery and allows selecting of a picture. Then I have another button that opens another activity that displays an ImageView. I want to be able to have that ImageView's image be the chosen one from the previous activity.
这是具有我单击以打开画廊并检索所选图像的按钮的类:
Here is the class that has the button I'm clicking to open the gallery and retrieve the chosen image:
public class EnterEdit extends Activity implements View.OnClickListener
{
private static final int SELECT_IMAGE = 0;
String filepath;
Bundle fieldresults;
Intent b;
@Override
protected void onCreate(Bundle savedInstanceState)
{
super.onCreate(savedInstanceState);
setContentView(R.layout.enteredit);
Button selectwallpaper = (Button) findViewById(R.id.selectwallpaper);
selectwallpaper.setOnClickListener(this);
Button previewwallpaper = (Button) findViewById(R.id.previewwallpaper);
previewwallpaper.setOnClickListener(this);
fieldresults = new Bundle();
b = new Intent(this, PreviewScreen.class);
}
@Override
public void onClick(View view)
{
switch (view.getId())
{
case R.id.selectwallpaper:
Intent gallery = new Intent(Intent.ACTION_PICK, android.provider.MediaStore.Images.Media.INTERNAL_CONTENT_URI);
startActivityForResult(gallery, SELECT_IMAGE);
break;
case R.id.previewwallpaper:
startActivity(b);
}
break;
}
protected void onActivityResult(int requestCode, int resultCode, Intent data)
{
super.onActivityResult(requestCode, resultCode, data);
if (resultCode == RESULT_OK)
{
if (requestCode == SELECT_IMAGE)
{
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]);
filepath = cursor.getString(columnindex);
cursor.close();
fieldresults.putString("bitmap", filepath);
b.putExtras(fieldresults);
}
}
}
}
这是应该显示所选图像的类:
And here is the class that should display the chosen image:
public class PreviewScreen extends Activity implements View.OnClickListener
{
@Override
protected void onCreate(Bundle savedInstanceState)
{
super.onCreate(savedInstanceState);
setContentView(R.layout.previewscreen);
Bundle fieldresults = this.getIntent().getExtras();
String backgroundpath = fieldresults.getString("bitmap");
String background = BitmapFactory.decodeFile(backgroundpath);
ImageView gallerypic = (ImageView) findViewById(R.id.gallerypic);
gallerypic.setImageBitmap(background);
}
}
如果我应该通过 selectedImage
或 b.putExtra("bitmap",selectedimage);
行.我都试过了,但我没有看到第二个活动的图像.如果我正确设置了图像视图,我也不确定在 PreviewScreen
类中.任何帮助表示赞赏.谢谢.
What I'm not sure about is in the OnActivityResult
if I should pass the selectedImage
or the chosenimage in the b.putExtra("bitmap", selectedimage);
line. I tried both but I didn't see an image on the second activity. Also I wasn't sure in the PreviewScreen
class if I'm setting the imageview correctly. Any help is appreciated. Thanks.
推荐答案
相信我,你不想在活动之间传递图像.相反,您为什么不简单地传递图像的路径并让第二个活动决定如何处理该路径(在这种情况下解码并显示图像).
Trust me, you don't want to be passing images between activities. Rather, why don't you simply pass the path of the image and let the second activity decide what to do with that path (decode and display the image, in this case).
这篇关于将图像传递给另一个活动的文章就介绍到这了,希望我们推荐的答案对大家有所帮助,也希望大家多多支持编程学习网!