RemoteView.setImageViewResource ничего не показывает

Я пытаюсь установить Image для ImageView в моем виджете, но вместо изображения я получил пустой экран

вот макет:

<?xml version="1.0" encoding="utf-8"?>
<RelativeLayout
 xmlns:android="http://schemas.android.com/apk/res/android"
 android:layout_width="match_parent"
 android:layout_height="match_parent"
 android:orientation="vertical">
<ImageView 
    android:id="@+id/stage"
  android:layout_width="match_parent"
 android:layout_height="match_parent"

    />
</RelativeLayout>

вот код:

public class MyWidget extends AppWidgetProvider {

      Bitmap bitmap;
      Bitmap bckgrnd;
      Bitmap over;

      @Override
      public void onEnabled(Context context) {
        super.onEnabled(context);

 RemoteViews widgetView = new RemoteViews(context.getPackageName(),
                R.layout.widget);
        bckgrnd=BitmapFactory.decodeResource(context.getResources(), R.drawable.backgrnd);
        over=BitmapFactory.decodeResource(context.getResources(), R.drawable.human);

        bitmap=bckgrnd.copy(Bitmap.Config.ARGB_8888, true);;
        Canvas c=new Canvas(bitmap);
        c.drawBitmap(over, 50, 50, new Paint());
        widgetView.setImageViewBitmap(R.id.stage, bitmap);



        Log.d("MyLog", "onEnabled");
      }

    ......
    }

Итак, у меня есть Log "OnEnabled" в моем LogCat, что означает, что этот код был выполнен хорошо, но ImageView остается пустым. Если я устанавливаю какое-либо изображение в макете XML - оно показывает это изображение, что означает, что XML установлен правильно, но код не меняет это изображение в ImageView.

Я пытался сделать это в onUpdate(), но это тоже не сработало. Что я могу сделать, чтобы изменить это изображение в ImageView?

2 ответа

Я думаю, что уже поздно.. но просто, чтобы помочь любому, кто все еще ищет.

Для меня это сработало..

// Change widget image, and update current app widget.
widgetView.setImageViewBitmap(R.id.stage, bitmap);
AppWidgetManager.getInstance(context).updateAppWidget(COMPONENT_NAME, widgetView);

А также, COMPONENT_NAME является

COMPONENT_NAME = new ComponentName(context, MyWidget.class);

Это обновит каждый виджет вашего приложения. Если вы хотите, чтобы обновлялся только виджет, который вы щелкнули, передайте его widgetId на месте COMPONENT_NAME в updateAppWidget(),

Я столкнулся с подобной проблемой, как вы, за исключением того, что я вызываю rv.setImageViewResource при последующих вызовах из onUpdate.

Мое решение состоит в том, что вы должны установить начальное изображение для ImageView в файле XML, затем вы можете изменить рис для ImageView во время выполнения; если вы не указали исходный рис в xml, то setImageViewResource не работает, ImageView ничего не показывает.

Обновить:

теперь setImageViewResource работает хорошо, независимо от того, есть ли у ImageView исходный src в xml или нет, но он подключен.

Другие вопросы по тегам