我在ImageView
中有一个Button
和Activity
,我们可以将其称为A.点击Button
时,我会启动图片库,在那里我选择一个将图像加载到ImageView
。
在ImageView
我订阅了Touch
个活动,我想在那里发布另一个Activity
,B。
我的问题是,我如何在Activity
B中获取在Activity
A中选择的图像?如何将数据从Activity
传递到另一个Activity
?
以下是Activity
A:
protected override void OnCreate (Bundle bundle)
{
base.OnCreate (bundle);
// Set our view from the "main" layout resource
SetContentView(Resource.Layout.Main);
_imageView = FindViewById<ImageView>(Resource.Id.imageView1);
_imageView.Touch += TouchMeImageViewOnTouch;
Button button = FindViewById<Button>(Resource.Id.button1);
button.Click += ButtonOnClick;
}
private void ButtonOnClick(object sender, EventArgs eventArgs)
{
Intent = new Intent();
Intent.SetType("image/*");
Intent.SetAction(Intent.ActionGetContent);
StartActivityForResult(Intent.CreateChooser(Intent, "Select Picture"), PickImageId);
}
protected override void OnActivityResult(int requestCode, Result resultCode, Intent data)
{
if ((requestCode == PickImageId) && (resultCode == Result.Ok) && (data != null))
{
Uri uri = data.Data;
_imageView.SetImageURI(uri);
string path = GetPathToImage(uri);
Toast.MakeText(this, path, ToastLength.Long);
}
}
private string GetPathToImage(Uri uri)
{
string path = null;
string[] projection = new[] { Android.Provider.MediaStore.Images.Media.InterfaceConsts.Data };
using (var cursor = ManagedQuery(uri, projection, null, null, null))
{
if (cursor != null)
{
int columnIndex = cursor.GetColumnIndexOrThrow(
Android.Provider.MediaStore.Images.Media.InterfaceConsts.Data);
cursor.MoveToFirst();
path = cursor.GetString(columnIndex);
}
}
return path;
}
private void TouchMeImageViewOnTouch(object sender, View.TouchEventArgs touchEventArgs)
{
}
答案 0 :(得分:0)
在TouchMeImageViewOnTouch
方法中,您需要启动Activity
B.这可以通过创建Intent
来完成。这个Intent
可以保存您发布的Activity
(B)的额外内容,可以获得。
所以我看到你已经找到了如何获取图片的路径,你只需将其传递到Activity
中的Intent
B,就像这样:
private void TouchMeImageViewOnTouch(object sender, View.TouchEventArgs touchEventArgs)
{
var intent = new Intent(this, typeof (MainActivity));
intent.PutExtra("imagePath", path);
StartActivity(intent);
}
然后在Activity
B中,您可以获得以下路径:
Intent.GetStringExtra("imagePath");
然后用它做任何你想做的事。