在单声道android中将图像从页面导航到其他图像

时间:2014-05-16 15:05:47

标签: xamarin.android

我在ImageView中有一个ButtonActivity,我们可以将其称为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)
{
}

1 个答案:

答案 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");

然后用它做任何你想做的事。