1

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

清单.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);
    }
}

小部件布局.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>

小部件信息.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>
4

2 回答 2

1

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

于 2013-03-27T18:48:02.523 回答
1

我今天遇到了类似的问题。它追求的是一种黑魔法仪式

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

于 2013-03-27T18:52:52.913 回答