1

text[] 内のさまざまなメッセージに更新される Android ウィジェットを作成しようとしています。最初のメッセージ「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);
    }
}

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>

ウィジェット情報.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 に答える