我正在尝试在onUpdate中的窗口小部件布局中的图像视图中设置图像,但图像未更新
@Override
public void onUpdate(Context context, AppWidgetManager appWidgetManager, int[] appWidgetIds)
{
Log.i(TAG, "onUpdate called");
for (int appWidgetId : appWidgetIds)
{
Bitmap bitmap=ImageUtils.getBitmap(context, appWidgetId);
RemoteViews remoteView = new RemoteViews(context.getPackageName(), R.layout.widget);
remoteView.setImageViewBitmap(R.id.imgView,bitmap);
appWidgetManager.updateAppWidget(appWidgetId, remoteView);
}
}
小部件的xml布局
<LinearLayout 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/imgView"
android:layout_width="fill_parent"
android:layout_height="fill_parent"
android:src="@drawable/ic_launcher" />
</LinearLayout>
清单文件
<application
android:allowBackup="true"
android:icon="@drawable/ic_launcher"
android:label="@string/app_name"
android:theme="@style/AppTheme" >
<activity
android:name="com.demo.MainActivity"
android:label="@string/app_name" >
<intent-filter>
<action android:name="android.intent.action.MAIN" />
<category android:name="android.intent.category.LAUNCHER" />
</intent-filter>
</activity>
<activity
android:name=".WidgetConfig"
android:label="@string/app_name" >
<intent-filter>
<action
android:name="android.appwidget.action.APPWIDGET_CONFIGURE" />
</intent-filter>
</activity>
<receiver
android:name="BasicWidgetProvider">
<intent-filter>
<action android:name="android.appwidget.action.APPWIDGET_UPDATE" />
</intent-filter>
<meta-data
android:name="android.appwidget.provider"
android:resource="@xml/widget_info" />
</receiver>
<receiver
android:name="BasicWidgetProvider">
<intent-filter>
<action
android:name="android.appwidget.action.APPWIDGET_UPDATE" />
<data android:scheme="widget" />
</intent-filter>
<meta-data
android:name="android.appwidget.provider"
android:resource="@xml/widget_info" />
</receiver>
</application>
widget_info.xml
<appwidget-provider
xmlns:android="http://schemas.android.com/apk/res/android"
android:minWidth="25dp"
android:minHeight="25dp"
android:initialLayout="@layout/widget"
android:configure="com.demo.WidgetConfig"
android:widgetCategory="home_screen|keyguard"
android:previewImage="@layout/widget"
android:resizeMode="horizontal|vertical"
android:initialKeyguardLayout="@layout/widget"
android:minResizeHeight="5dp"
android:minResizeWidth="5dp">
</appwidget-provider>
但是当尝试加载小部件时,我得到一个Toast“应用程序未安装”,我没有显示任何这样的吐司来自哪里?
为什么图像没有设置,如何修复?
答案 0 :(得分:1)
确保在appwidget-provider xml的“android:configure”字段中设置了正确的包名称,并且在清单文件中设置了正确的intetn-filter。
答案 1 :(得分:0)
请尝试使用remoteview.setimageViewuri,如下所示。
@Override
public void onUpdate(Context context, AppWidgetManager appWidgetManager, int[] appWidgetIds) {
remoteViews = new RemoteViews(context.getPackageName(), R.layout.main);
thisWidget = new ComponentName(context, HelloWidget.class);
remoteViews.setImageViewUri(R.id.imageView1,Uri.parse("/mnt/sdcard/test.png"));
appWidgetManager.updateAppWidget(thisWidget, remoteViews);
}
答案 2 :(得分:0)
<receiver
android:name="BasicWidgetProvider">
<intent-filter>
<action android:name="android.appwidget.action.APPWIDGET_UPDATE" />
</intent-filter>
<meta-data
android:name="android.appwidget.provider"
android:resource="@xml/widget_info" />
</receiver>
你在名字前面缺少点,你有两次这个接收器。
答案 3 :(得分:0)
查看此链接。
这是小部件的完整演示
Click Here
并导入此项目com.javatechig.widgetdemo