我正在尝试在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静态值,而不是在单击按钮时更新它。
答案 0 :(得分:0)
回答我的问题:如果点击按钮没有响应,则表示onReceive出现问题。使用onReceive()时最好创建自定义意图。如有任何疑问或建议,请写信,我会很乐意回复和改进..