ImageView.setImageURI НЕ работает при попытке назначить R.drawable.X Uri

связан с:

Требуется предложение о смешанном "Uri/int id" изображения окружающих

теперь моя проблема в том, что:

ImageView imgView=(ImageView)findViewById(R.id.imgView);
Uri imgUri=Uri.parse("android.resource://my.package.name/"+R.drawable.image);
imageView.setImageURI(imgUri);

НЕ работает. почему?

Я знаю, что

imgView.setImageDrawable(Drawable.createFromStream(
                    getContentResolver().openInputStream(imgUri),
                    null));

работа.

но это НЕ решает мою проблему. потому что я хочу установить изображение с помощью uri независимо, если это происходит из ресурса или из камеры ACTION_PICK намерения...

любые предложения приветствуются. Спасибо. Отношения

Ответы

Ответ 1

Попробуйте это

Uri imgUri=Uri.parse("android.resource://my.package.name/"+R.drawable.image);
imageView.setImageURI(null); 
imageView.setImageURI(imgUri);

Это обходной путь для обновления ImageButton, который пытается кэшировать предыдущее изображение Uri. Передача null эффективно сбрасывает его.

Решение, предложенное в этой книге: Sams Teach Yourself Разработка приложений для Android за 24 часа - Очень рекомендуется читать.

Ответ 2

imageView.postInvalidate() работает. Или imageView.invalidate(), если вы находитесь в потоке пользовательского интерфейса.