Android小部件未更新

时间:2013-03-27 17:57:47

标签: android android-widget

我正在尝试编写一个Android小部件,将其自身更新为text []中的不同消息。它输出第一条消息“Test1”,但不继续。当我选择要放置在主屏幕上的新小部件时,它会更新。它不会在logcat中吐出任何东西。它应该每5秒更新一次小部件。我选择5秒仅用于测试目的。

的Manifest.xml

<manifest xmlns:android="http://schemas.android.com/apk/res/android"
package="com.example.messageswidget"
android:versionCode="1"
android:versionName="1.0" >

<uses-sdk
    android:minSdkVersion="8"
    android:targetSdkVersion="17" />

<application
    android:allowBackup="true"
    android:icon="@drawable/ic_launcher"
    android:label="@string/app_name"
    android:theme="@style/AppTheme" >

    <receiver android:name="main.MessagesWidget" android:label="@string/app_name">
        <intent-filter>
            <action android:name="android.appwidget.action.APPWIDGET_UPDATE" />
        </intent-filter>
        <meta-data android:name="android.appwidget.provider"
            android:resource="@xml/widgetinfo" />
    </receiver>

</application>

MessagesWidget.java

package main;


import android.appwidget.AppWidgetManager;
import android.appwidget.AppWidgetProvider;
import android.content.ComponentName;
import android.content.Context;
import android.util.Log;
import android.widget.RemoteViews;

import com.example.messageswidget.R;

public class MessagesWidget extends AppWidgetProvider {
    private static int n = 0;
    String[] text = {"Test1", "More2", "Good3"};

    @Override
    public void onUpdate(Context context, AppWidgetManager appWidgetManager,
        int[] appWidgetIds) {
        super.onUpdate(context, appWidgetManager, appWidgetIds);
        Log.d("test", "good");
        // TODO Auto-generated method stub
        RemoteViews views = new RemoteViews(context.getPackageName(), R.layout.widgetlayout);
        views.setTextViewText(R.id.msg, text[n]);
        n = (n + 1) % text.length;

        ComponentName cname = new ComponentName(context, MessagesWidget.class);
        appWidgetManager.updateAppWidget(cname, views);
    }
}

widgetlayout.xml

<?xml version="1.0" encoding="utf-8"?>
<LinearLayout xmlns:android="http://schemas.android.com/apk/res/android"
    android:layout_width="match_parent"
    android:layout_height="match_parent"
    android:orientation="vertical" >

<TextView android:id="@+id/msg"
    android:textIsSelectable="true"
    android:layout_width="wrap_content"
    android:layout_height="wrap_content" />

</LinearLayout>

widgetinfo.xml

<?xml version="1.0" encoding="utf-8"?>
<appwidget-provider xmlns:android="http://schemas.android.com/apk/res/android"
    android:minWidth="72dip"
    android:minHeight="72dip"
    android:updatePeriodMillis="5000" >

</appwidget-provider>

2 个答案:

答案 0 :(得分:1)

我今天遇到了类似的问题。它追求了一种black magic ritual

下次问题出现时,不知道它是什么以及该怎么做。

答案 1 :(得分:0)

您无法每5秒更新一次小部件(至少不是您的方式) android:updatePeriodMillis限制为30分钟。