我是Android Studio的新手,并且堆栈溢出,所以我可能没有任何意义,但是我想将一些数据从一项活动传递到另一项活动。我已经通过意图上的putExtra()处理了想要传递给活动的所有文本。但是,我不知道如何在必须使用setImageResource()生成的图像上设置getIntent。
FavActivity
Cursor cursor = (Cursor) mylist.getItemAtPosition(position);
String listName = cursor.getString(1);
String displayName = db.getName(listName);
if (!displayName.isEmpty()) {
String isleName = db.getIsle(listName);
String rowName = db.getRow(listName);
String locationImage = db.getLocationImage(listName);
Intent myIntent = new Intent(view.getContext(),MainActivity.class);
myIntent.putExtra("name", displayName);
myIntent.putExtra("isle", "Isle: " + isleName);
myIntent.putExtra("row", "Row: " +rowName);
myIntent.putExtra("image", locationImage);
startActivity(myIntent);
MainActivity
textView.setText(getIntent().getStringExtra("name"));
textView3.setText(getIntent().getStringExtra("isle"));
textView4.setText(getIntent().getStringExtra("row"));
图像位置必须设置为从数据库文本转换
locationView.setImageResource(getResources().getIdentifier(locationImage, "drawable", getPackageName()));
我该如何设定意图?
答案 0 :(得分:1)
将图像存储在文件中,并将文件路径通过意图传递到另一个活动,您可以在另一个活动中从该文件路径访问图像
答案 1 :(得分:0)
Hiii, 您可以发送Base64格式的图像并将其在下一个活动中接收后转换为图像。
尽管请确保您可以使用50kb
发送最多Intents
数据。
否则,您的应用可能会在发送和接收数据时出现异常。
答案 2 :(得分:0)
您可以传递图像,但是我建议将图像存储在内部存储器中,然后使用Intent传递它们。
从API 24开始,有1 MB的限制,否则它将抛出TransactionTooLarge Exception
并且可能会占用您过多的内存
将图像保存到内部存储器-
public String createImageFromBitmap(Bitmap bitmap) {
String fileName = "myImage";//no .png or .jpg needed
try {
ByteArrayOutputStream bytes = new ByteArrayOutputStream();
bitmap.compress(Bitmap.CompressFormat.JPEG, 100, bytes);
FileOutputStream fo = openFileOutput(fileName, Context.MODE_PRIVATE);
fo.write(bytes.toByteArray());
// remember close file output
fo.close();
} catch (Exception e) {
e.printStackTrace();
fileName = null;
}
return fileName;
}
,然后在 Bundle
中传递该文件名Bitmap bitmap = BitmapFactory.decodeStream(context
.openFileInput("myImage"));
要使用的另一个示例
protected void onCreate(Bundle savedInstanceState) {
setContentView(R.layout.my_layout);
Bitmap bitmap = getIntent().getParcelableExtra("image");
ImageView imageView = (ImageView) findViewById(R.id.imageview);
imageView.setImageBitmap(bitmap);
}