Используя намерение камеры в ListView, отправьте позицию и получите позицию в методе OnActivtyResult. - PullRequest
0 голосов
/ 08 июня 2018

У меня есть событие кнопки 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 и не могу получить Position в функции OnActivityResult.

Как я могу получить данные, т.е. позицию в методе OnActivityResult?

1 Ответ

0 голосов
/ 11 июня 2018

получить данные, т.е. позицию в методе OnActivityResult

Вы не можете получить позицию в OnActivityResult по вашему коду.

1) она должна быть Position, а не position.

2) если вы измените его на Position (data.GetIntExtra("Position", 0);), вы все равно не сможете получить позицию.

О методе StartActivityForResult:

Если вы хотите перейти с AcitivityA на AcitivityB без возвращаемого значения, вы можете использовать StartActivity, но если вы хотите получить данные с AcitivityB, вам нужно использовать StartActivityForResult,и в то же время вам необходимо использовать метод SetResult в SystemCameraAcitvity , есть проблема, мы не можем обработать SystemCameraAcitvity , это системныйActivity, у нас нет Activity в нашем приложении, поэтому мы не можем использовать SetResult для отправки позиции обратно в нашу активность, которая содержит ListView.

Итак, решение в том, чтовам нужно определить статическую переменную в вашей деятельности, чтобы сохранить позицию, изменить ее значение, когда вы нажимаете кнопку, и после съемки вам нужночтобы оценить resultCode и requestCode, а затем использовать статическую переменную для установки изображения.

...