我正在开发应用程序,我们正在从活动A创建活动B.在活动B中,我们创建了活动C,我们希望将图像和文本返回到活动A.
在谷歌检查但没有得到我正在寻找的答案。你能告诉我这是怎么可能的吗?
提前感谢您的帮助。
更新:首先是你的答案。让我更清楚地解释一下我的要求。
在活动A下,通过Intent我们打开Gallery并选择Image。通过在此活动中定义startActivityForResult,我们捕获用户选择的图像并创建新的Intent(活动B),其中我们通过putExtra函数获取所有参数。我们在这里显示用户选择的图像,并允许用户编辑图像和放置文本。 现在我们要找的是在已创建的活动A中显示已编辑的图像和文本。数据添加将通过列表视图已经存在少量列表视图行。
希望我们现在的要求更加明确。
提前感谢您的帮助。
更新(显示一些代码)
我在活动A中应用的代码
Intent intent = new Intent(Intent.ACTION_PICK,
android.provider.MediaStore.Images.Media.EXTERNAL_CONTENT_URI);
intent.setType("image/*");
startActivityForResult(Intent.createChooser(intent, "Select File"), SELECT_FILE);
结果可在活动A中通过startActivityForResult获得,如下所示
if (requestCode == SELECT_FILE) {
Uri selectedImageUri = data.getData();
String[] projection =
{MediaStore.MediaColumns.DATA};Log.i("User_Chat_Page",
"projection="+selectedImageUri);
Cursor cursor =managedQuery(selectedImageUri,projection,null,null,null);
int column_index =
cursor.getColumnIndexOrThrow(MediaStore.MediaColumns.DATA);
cursor.moveToFirst();
String selectedImagePath = cursor.getString(column_index);
image_name = selectedImagePath;
Bitmap bm;
BitmapFactory.Options options = new BitmapFactory.Options();
options.inJustDecodeBounds = true;
BitmapFactory.decodeFile(selectedImagePath, options);
final int REQUIRED_SIZE = 200;
int scale = 1;
while (options.outWidth / scale / 2 >= REQUIRED_SIZE
&& options.outHeight / scale / 2 >= REQUIRED_SIZE)
scale *= 2;
options.inSampleSize = scale;
options.inJustDecodeBounds = false;
bm = BitmapFactory.decodeFile(selectedImagePath, options);
Intent edit_image_intent = new Intent(ctx,
DrawOnBitmapActivity.class);
edit_image_intent.putExtra("selected_img_path",
selectedImagePath);
edit_image_intent.putExtra("selected_imguri", selectedImageUri);
edit_image_intent.putExtra("message_source", "to");
edit_image_intent.setData(selectedImageUri);
ctx.startActivity(edit_image_intent);
}
活动B(intent:edit_image_intent)中显示的图像是用户编辑图像并放置文本。
我的查询是如何在Activity-A中显示编辑图像和文本。在列表视图中需要显示,因为视图行已经显示在Actiity-A中(例如,在聊天代码中)
答案 0 :(得分:2)
我建议你通过数据库或共享偏好来做。意图对你来说是个不错的选择
答案 1 :(得分:0)
如果您想避免使用数据库或共享首选项,则可以在活动中级联onActivityResult()方法:
ActivityA -> startActivityForResult(AcivitityB)
ActivityB -> startActivityForResult(ActivityC)
add text and image(url) here to result
setResult()
finish activity
ActivityB.onActivityResult()
get data from AcitivityC result
setResult() with data received
ActivityA.onActivityResult()
get data from result