1

我正在研究如何编写自己的android应用程序。我自己写了一个,现在我正在尝试为它实现一个 AppWidget。

将此页面用作我工作的指南。

我决定实现一个 AppWidget,它一开始没有任何逻辑,只是一个布局。该项目构建和运行没有错误,但是,当我尝试将我的小部件添加到启动器时,我没有在可用小部件列表中看到它。

我只能在具有小部件的应用程序列表中看到我的应用程序,但是,当尝试按应用程序过滤小部件时,我什么也看不到。

我已经寻找解决方案,但没有找到任何解决方案。刚刚在 android 4.0.4 中发现了 appwidgets 的问题,可以通过重新启动设备或在小部件有任何小部件时说明主应用程序来解决。

你可以在下面看到我的小部件的代码。

它有什么问题?问题出在空班吗?


我在清单中做了以下更改:

<receiver android:name="ru.pinedevelop.wind.NormalWidget"
 android:label="@string/app_name"
 android:icon="@drawable/ic_launcher">
  <intent-filter>
   <action android:name="android.appwidget.action.APPWIDGET_UPDATE" />
  </intent-filter>
  <meta-data android:name="android.appwidget.provider"
   android:resource="@xml/normal_widget" />
</receiver>

然后将以下描述添加到 xml/normal_widget.xml:

<?xml version="1.0" encoding="utf-8"?>
<appwidget-provider xmlns:android="schemas.android.com/apk/res/android"
                android:minWidth="146dip"
                android:minHeight="72dip"
                android:updatePeriodMillis="86400000"
                android:resizeMode="none"
                android:initialLayout="@layout/normal_widget_main" />

后来我为我的小部件添加了以下布局:

<?xml version="1.0" encoding="utf-8"?>
<LinearLayout xmlns:android="http://schemas.android.com/apk/res/android"
          android:orientation="vertical"
          android:layout_width="fill_parent"
          android:layout_height="wrap_content"
          android:layout_gravity="center"
          android:background="@drawable/appwidget_dark_bg">

<LinearLayout xmlns:android="http://schemas.android.com/apk/res/android"
              android:orientation="horizontal"
              android:layout_width="fill_parent"
              android:layout_height="wrap_content"
              android:layout_gravity="center">
    <TextView android:id="@+id/widget_spot_name"
              android:layout_height="wrap_content"
              android:layout_width="wrap_content"
              android:layout_gravity="center_vertical|left"
              android:textColor="@android:color/white"/>
    <TextView android:id="@+id/widget_spot_update_time"
              android:layout_height="wrap_content"
              android:layout_width="wrap_content"
              android:layout_gravity="center_vertical|left"
              android:textColor="@android:color/white"/>

</LinearLayout>
<LinearLayout xmlns:android="http://schemas.android.com/apk/res/android"
              android:orientation="horizontal"
              android:layout_width="fill_parent"
              android:layout_height="wrap_content"
              android:layout_gravity="center">

    <LinearLayout xmlns:android="http://schemas.android.com/apk/res/android"
                  android:orientation="vertical"
                  android:layout_width="fill_parent"
                  android:layout_height="wrap_content"
                  android:layout_gravity="center">
        <LinearLayout xmlns:android="http://schemas.android.com/apk/res/android"
                      android:orientation="horizontal"
                      android:layout_width="fill_parent"
                      android:layout_height="wrap_content"
                      android:layout_gravity="center">
            <TextView android:id="@+id/widget_max_label"
                      android:layout_height="wrap_content"
                      android:layout_width="wrap_content"
                      android:text="@string/widget_label_max"
                      android:layout_gravity="center_vertical|left"
                      android:textColor="@android:color/white"/>
            <TextView android:id="@+id/widget_max_value"
                      android:layout_height="wrap_content"
                      android:layout_width="wrap_content"
                      android:layout_gravity="center_vertical|left"
                      android:textColor="@android:color/white"/>
        </LinearLayout>
        <LinearLayout xmlns:android="http://schemas.android.com/apk/res/android"
                      android:orientation="horizontal"
                      android:layout_width="fill_parent"
                      android:layout_height="wrap_content"
                      android:layout_gravity="center">
            <TextView android:id="@+id/widget_avg_label"
                      android:layout_height="wrap_content"
                      android:layout_width="wrap_content"
                      android:text="@string/widget_label_avg"
                      android:layout_gravity="center_vertical|left"
                      android:textColor="@android:color/white"/>
            <TextView android:id="@+id/widget_avg_value"
                      android:layout_height="wrap_content"
                      android:layout_width="wrap_content"
                      android:layout_gravity="center_vertical|left"
                      android:textColor="@android:color/white"/>
        </LinearLayout>
        <LinearLayout xmlns:android="http://schemas.android.com/apk/res/android"
                      android:orientation="horizontal"
                      android:layout_width="fill_parent"
                      android:layout_height="wrap_content"
                      android:layout_gravity="center">
            <TextView android:id="@+id/widget_min_label"
                      android:layout_height="wrap_content"
                      android:layout_width="wrap_content"
                      android:text="@string/widget_label_min"
                      android:layout_gravity="center_vertical|left"
                      android:textColor="@android:color/white"/>
            <TextView android:id="@+id/widget_min_value"
                      android:layout_height="wrap_content"
                      android:layout_width="wrap_content"
                      android:layout_gravity="center_vertical|left"
                      android:textColor="@android:color/white"/>
        </LinearLayout>
    </LinearLayout>
    <LinearLayout xmlns:android="http://schemas.android.com/apk/res/android"
                  android:orientation="vertical"
                  android:layout_width="fill_parent"
                  android:layout_height="wrap_content"
                  android:layout_gravity="center">

        <ImageView
                android:layout_width="wrap_content"
                android:layout_height="wrap_content"
                android:id="@+id/widget_arrow"
                android:src="@drawable/arrow50"
                android:background="#ffffff"
                android:cropToPadding="false"
                android:contentDescription="@string/widget_arrow_descr"/>
    </LinearLayout>
</LinearLayout>
</LinearLayout>

并为它创建了一个虚拟类:

package ru.pinedevelop.wind;
import android.appwidget.AppWidgetProvider;
public class NormalWidget extends AppWidgetProvider {
}
4

1 回答 1

0

我发现小部件声明中存在问题。

我刚刚编辑了一行,添加了“http://”:

<appwidget-provider xmlns:android="http://schemas.android.com/apk/res/android"...
于 2013-07-11T14:18:55.610 回答