添加ImageView会导致Android应用小部件崩溃

4

我正在制作一个非常简单的小部件,使用ImageView显示一张图片。

我的布局如下所示:

<RelativeLayout
    xmlns:android="http://schemas.android.com/apk/res/android"
    android:layout_width="match_parent"
    android:layout_height="match_parent"
    android:padding="16dip">

    <!-- ImageView logo -->
    <ImageView
        android:id="@+id/logo"
        android:src="@drawable/giants"
        android:contentDescription="@string/app_name"
        android:layout_width="wrap_content"
        android:layout_height="wrap_content"
        android:layout_centerInParent="true"
        android:scaleType="fitXY" />

</RelativeLayout>

我的小部件提供程序类如下所示

 public class LogoWidgetProvider extends AppWidgetProvider {

    @Override
    public void onUpdate(Context context, AppWidgetManager 
    appWidgetManager, int[] appWidgetIds) {

        // What Happens While App Goes Through Each Widget Id//
        for (int currentWidgetId: appWidgetIds) {

            // Define And Instantiate Variable RemoteViews widgetLogo//
            RemoteViews widgetLogo = new RemoteViews(context.getPackageName(), R.layout.widget_logo);

            // Update Widget//
            appWidgetManager.updateAppWidget(currentWidgetId, widgetLogo);
        }
    }
}

我的清单中的接收器看起来像这样:
    <!-- Widget Provider Logo -->
    <receiver android:name=".LogoWidgetProvider">

        <!-- Tell The App That There Is A Widget To Display -->
        <intent-filter>
            <action android:name="android.appwidget.action.APPWIDGET_UPDATE" />
        </intent-filter>

        <!-- Tell The App Where To Find Widget Data -->
        <meta-data
            android:name="android.appwidget.provider"
            android:resource="@xml/appwidget_info_logo">
        </meta-data>

    </receiver>

最后,小部件提供程序的XML文件如下所示。
<!-- Basic Information For Widget Logo -->
<appwidget-provider
    xmlns:android="http://schemas.android.com/apk/res/android"
    android:initialLayout="@layout/widget_logo"
    android:minHeight="110dip"
    android:minWidth="110dip"
    android:minResizeWidth="40dip"
    android:resizeMode="vertical|horizontal"
    android:updatePeriodMillis="3600000"
    android:widgetCategory="home_screen">

</appwidget-provider>

出于某种原因,这个小部件每次都会崩溃。如果我把ImageView换成Button,它就可以正常工作。我错过了什么,才能让小部件显示图片?

谢谢。


1
你能同时发布一份堆栈跟踪吗? - Mykhailo Yuzheka
@MykhailoYuzheka 很遗憾在堆栈跟踪中没有任何显示。 应用程序本身不会崩溃,只是当我将小部件放在我的主屏幕上时它会崩溃。 - Jordan
你应该用问题描述来命名你的问题标题。这样更有经验的开发者就能更容易地发现他们专业领域内的问题。此外,你应该尝试提出更短的问题,因为它们会更快得到答案,并且答案的质量也会更好。 - Alex.F
1个回答

2

我明白了。您可以使用任何分辨率的图像,但需要将其放在400像素乘以400像素的框内。我用画笔来完成这个操作。一旦图像放在框内,图像就会显示出来。


网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接