在ListView中使用相机意图发送位置并在OnActivtyResult方法中获取位置

时间:2018-06-08 07:40:06

标签: android android-intent xamarin.android

我为每个列表项都有一个Listview和TakePicture按钮事件。我需要在OnActivityResult方法上发送位置并获取位置,以使用该位置更新图像到列表项

我的代码是

holder.TakePicture1.Click += delegate (object sender, System.EventArgs args)
  {
     if (remnantModel != null)
        {
           Intent camIntent = new Intent(MediaStore.ActionImageCapture);
           camIntent.PutExtra("Position", position);
           context.StartActivityForResult(camIntent, 2);
         }
  };

在OnActivityResult函数中

protected override void OnActivityResult(int requestCode, Result resultCode, Intent data)
  {
       base.OnActivityResult(requestCode, resultCode, data);

       switch (requestCode)
        {
        case 2:
            if (data != null)
            {
                Bundle extras = data.Extras;
                Bitmap imageBitmap = (Bitmap)extras.Get("data");
                int pos = data.GetIntExtra("position", 0);
                int position = data.Extras.GetInt("position", 0); 
                // Not getting position value here
                RemList[pos].Path.SetImageBitmap(imageBitmap); 
            }
        }
  }

如上面的代码,我使用的是本机ActionImageCapture事件,无法在OnActivityResult函数中获取Position。

如何获取数据,即在OnActivityResult方法中的位置?

1 个答案:

答案 0 :(得分:0)

  

获取数据,即在OnActivityResult方法中的位置

您无法通过代码获取<h1>Welcome to Demo page</h1> 中的位置。

1)它应该是OnActivityResult,而不是Position

2)如果您将其更改为positionPosition),您仍然无法获得该职位。

关于data.GetIntExtra("Position", 0);方法:

如果您想从StartActivityForResult跳到AcitivityA而没有返回值,可以使用AcitivityB,但如果您想从StartActivity获取数据,则需要使用AcitivityB,同时,您需要在 SystemCameraAcitvity 中使用SetResult方法,有问题,我们无法处理 SystemCameraAcitvity < / strong>,这是系统活动,我们的应用程序中没有活动,因此我们无法使用StartActivityForResult将位置发送回包含SetResult的活动。

因此,解决方案是,您需要在活动中定义静态变量来存储位置,在单击按钮时更改其值,并且在拍摄照片后,您需要判断ListViewresultCode,然后使用静态变量来设置图片。