我一直在关注各种小部件教程,例如这个和这个。
我试着将它们的代码调整到我的目的上,并尝试直接复制粘贴。但无论我做什么,我的小部件都不会被更新。当它被放置在主屏幕上时,文本保持为创建时的静态文本。我只需要这个应用程序更新包含在布局中的 4 个 TextView。
下面的代码大多数是从教程中复制的,我已经尝试过调试 onUpdate 方法,但断点似乎从未被触发过。
非常感谢您的任何帮助。
编辑:我恢复了一个我之前尝试过的更简单版本的小部件,并用简单小部件的代码替换了下面的代码。 我对清单进行了CommonsWare建议的更改。 不幸的是,问题仍然存在。
我的主要.java文件如下:
我试着将它们的代码调整到我的目的上,并尝试直接复制粘贴。但无论我做什么,我的小部件都不会被更新。当它被放置在主屏幕上时,文本保持为创建时的静态文本。我只需要这个应用程序更新包含在布局中的 4 个 TextView。
下面的代码大多数是从教程中复制的,我已经尝试过调试 onUpdate 方法,但断点似乎从未被触发过。
非常感谢您的任何帮助。
编辑:我恢复了一个我之前尝试过的更简单版本的小部件,并用简单小部件的代码替换了下面的代码。 我对清单进行了CommonsWare建议的更改。 不幸的是,问题仍然存在。
我的主要.java文件如下:
public class NetStatWidget extends AppWidgetProvider
{
public void onUpdate(Context context, AppWidgetManager manager, int[] appWidgetIds)
{
ComponentName thisWidget = new ComponentName(context, NetStatWidget.class);
int[] widgetId = manager.getAppWidgetIds(thisWidget);
RemoteViews remoteView = new RemoteViews(context.getPackageName(), R.layout.appwidget);
remoteView.setTextViewText(R.id.textView0, "Hello");
manager.updateAppWidget(widgetId, remoteView);
}
}
我的宣言:
<?xml version="1.0" encoding="utf-8"?>
<manifest xmlns:android="http://schemas.android.com/apk/res/android"
package="net.stat"
android:versionCode="1"
android:versionName="1.0" >
<uses-sdk android:minSdkVersion="10" />
<application
android:icon="@drawable/ic_launcher"
android:label="@string/app_name" >
<receiver android:name="NetStatWidget" >
<intent-filter>
<action android:name="android.appwidget.action.APPWIDGET_UPDATE" />
</intent-filter>
<meta-data
android:name="android.appwidget.provider"
android:resource="@xml/providerinfo" />
</receiver>
</application>
</manifest>
我的小部件提供程序信息:
<?xml version="1.0" encoding="utf-8"?>
<appwidget-provider
xmlns:android="http://schemas.android.com/apk/res/android"
android:initialLayout="@layout/main"
android:minWidth="146dip"
android:minHeight="72dip"
android:updatePeriodMillis="10000">
res/layout/appwidget.xml
中有一个名为@+id/textView0
的TextView
。虽然你列出的代码不会编译,因为没有widgetId
。考虑暂时切换到采用ComponentName
的updateAppWidget()
版本,这样你就不会迷失在应用程序小部件ID中了。 - CommonsWare