看不到我的AppWidget,我正在尝试添加到现有的应用程序中

时间:2013-07-10 13:29:33

标签: android xml android-appwidget

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

我正在使用this page作为我工作的指南。

我决定实现一个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>

然后将以下desctiption添加到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 {
}

1 个答案:

答案 0 :(得分:0)

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

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

<appwidget-provider xmlns:android="http://schemas.android.com/apk/res/android"...