Итак, я получил контекстное меню:
AdapterView.AdapterContextMenuInfo info = (AdapterView.AdapterContextMenuInfo) item.getMenuInfo();
switch(item.getItemId()){
case R.id.change_image_menu:
Intent intent = new Intent(Intent.ACTION_PICK, MediaStore.Images.Media.EXTERNAL_CONTENT_URI);
intent.putExtra(BUTTON_ID, info.position);
startActivityForResult(intent.createChooser(intent, "Select new image for button"), CHANGE_IMAGE_REQUEST_CODE);
}
и соответствующий onActivityResult ();
protected void onActivityResult(int requestCode, int resultCode, @Nullable Intent data) {
if (requestCode == CHANGE_IMAGE_REQUEST_CODE && resultCode == Activity.RESULT_OK) {
Uri uri = null;
if (data != null) {
uri = data.getData();
Log.d(TAG, "onActivityResult: uri of picked file is: " + uri.toString());
mButtonViewModel.updateImage(data.getIntExtra(BUTTON_ID,-1), uri.toString());
}
}
super.onActivityResult(requestCode, resultCode, data);
}
Очевидно, что это не работает - намерение, которое я получаю, содержит только Uri выбранного файла. Таким образом, поиск ответов заставил меня сохранить позицию в общих настройках или в поле - есть ли более элегантное решение?