窗口小部件中的按钮不更新textview

时间:2013-05-23 20:06:26

标签: android android-widget

我正在尝试在Android小部件中创建一个按钮,该按钮递增一个值并在文本视图上设置它。但该值不是更新counter-num。

这是我的DemoUI.java类

    package com.example.widget2;

import android.app.PendingIntent;
import android.appwidget.AppWidgetManager;
import android.appwidget.AppWidgetProvider;
import android.content.ComponentName;
import android.content.Context;
import android.content.Intent;
import android.os.Bundle;
import android.util.Log;
import android.widget.RemoteViews;
import android.widget.Toast;

public class DemoUI extends AppWidgetProvider {

    public static String MY_WIDGET_UPDATE="ACTION_BUTTON1"; 
    RemoteViews remoteViews;

    @Override
    public void onReceive(Context context, Intent intent){
        super.onReceive(context, intent);
        final String action=intent.getAction();
        if(intent.getAction().equals(MY_WIDGET_UPDATE)){

            int num;
            num=intent.getIntExtra("num",1);
            Toast.makeText(context, num, Toast.LENGTH_SHORT).show();

        }
    }

    @Override
    public void onUpdate(Context context, AppWidgetManager appWidgetManager,int []appWidgetIds){

        int num=1;
        ComponentName comp=new ComponentName(context,DemoUI.class);
        int []allWidgetIds=appWidgetManager.getAppWidgetIds(comp);

        for(int widgetIds:allWidgetIds){

            remoteViews=new RemoteViews(context.getPackageName(),R.layout.main);
            Log.w("WidgetExample2",String.valueOf(num));

            remoteViews.setTextViewText(R.id.text1, String.valueOf(++num));

            //register listener
            Intent intent=new Intent(context,DemoUI.class);
            intent.setAction(MY_WIDGET_UPDATE);
            //intent.putExtra(AppWidgetManager.EXTRA_APPWIDGET_IDS, appWidgetIds);
            intent.putExtra("num", num++);

            PendingIntent pendingIntent = PendingIntent.getBroadcast(context,0,intent,PendingIntent.FLAG_UPDATE_CURRENT);
            remoteViews.setOnClickPendingIntent(R.id.button1, pendingIntent);

            //committing changes to the widget
            appWidgetManager.updateAppWidget(widgetIds, remoteViews);

        }
    }

}

//文本视图仅显示num静态值,而不是在单击按钮时更新它。

1 个答案:

答案 0 :(得分:0)

回答我的问题:如果点击按钮没有响应,则表示onReceive出现问题。使用onReceive()时最好创建自定义意图。如有任何疑问或建议,请写信,我会很乐意回复和改进..