我正在研究如何编写自己的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 {
}
答案 0 :(得分:0)
我发现小部件声明存在问题。
我刚编辑了一行,添加了“http://”:
<appwidget-provider xmlns:android="http://schemas.android.com/apk/res/android"...