gpt4 book ai didi

安卓小部件按钮

转载 作者:行者123 更新时间:2023-11-30 04:38:51 26 4
gpt4 key购买 nike

我正在使用 this创建小部件的教程。我的问题是按钮。在我的小部件中有三行,每行都包含一个 TextView 和三个按钮。使用下面的代码,当用户单击 ButtonP1、ButtonP2 或 ButtonP3 时,应该会看到带有不同消息的 toast 消息。问题是无论我点击哪个按钮,我每次都会收到第一个 toast 消息(“按钮 P1 的消息”)。

  public class HelloWidget extends AppWidgetProvider {

public static String ACTION_WIDGET_CONFIGURE = "ConfigureWidget";
public static String ACTION_WIDGET_RECEIVER = "ActionReceiverWidget";

@Override
public void onUpdate(Context context, AppWidgetManager appWidgetManager, int[] appWidgetIds) {
context.startService(new Intent(context, UpdateService.class));
Intent intent = new Intent(context, UpdateService.class);
context.startService(intent);

RemoteViews remoteViews = new RemoteViews(context.getPackageName(), R.layout.widgetmain);

Intent active = new Intent(context, HelloWidget.class);
active.setAction(ACTION_WIDGET_RECEIVER);
active.putExtra("msg", "Message for Button P1");

PendingIntent actionPendingIntent = PendingIntent.getBroadcast(context, 0, active, 0);
remoteViews.setOnClickPendingIntent(R.id.ButtonP1, actionPendingIntent);

Intent active2 = new Intent(context, HelloWidget.class);
active2.setAction(ACTION_WIDGET_RECEIVER);
active2.putExtra("msg", "Message for Button P2");

PendingIntent actionPendingIntent2 = PendingIntent.getBroadcast(context, 0, active2, 0);
remoteViews.setOnClickPendingIntent(R.id.ButtonP2, actionPendingIntent2);

Intent active3 = new Intent(context, HelloWidget.class);
active3.setAction(ACTION_WIDGET_RECEIVER);
active3.putExtra("msg", "Message for Button P3");

PendingIntent actionPendingIntent3 = PendingIntent.getBroadcast(context, 0, active3, 0);
remoteViews.setOnClickPendingIntent(R.id.ButtonP3, actionPendingIntent3);

appWidgetManager.updateAppWidget(appWidgetIds, remoteViews);

}

@Override
public void onReceive(Context context, Intent intent) {

final String action = intent.getAction();
if (AppWidgetManager.ACTION_APPWIDGET_DELETED.equals(action)) {
final int appWidgetId = intent.getExtras().getInt(
AppWidgetManager.EXTRA_APPWIDGET_ID,
AppWidgetManager.INVALID_APPWIDGET_ID);
if (appWidgetId != AppWidgetManager.INVALID_APPWIDGET_ID) {
this.onDeleted(context, new int[] { appWidgetId });
}
} else {
// check, if our Action was called
if (intent.getAction().equals(ACTION_WIDGET_RECEIVER)) {
String msg = "null";
try {
msg = intent.getStringExtra("msg");
} catch (NullPointerException e) {
Log.e("Error", "msg = null");
}
Toast.makeText(context, msg, Toast.LENGTH_SHORT).show();
}
super.onReceive(context, intent);
}

}


}

我认为布局的 .xml 文件不是必需的,所以我不会浪费空间。

我错过了什么?

解决方案

Intent configIntent4 = new Intent(context, Call1.class);
configIntent4.setAction(ACTION_WIDGET_CONFIGURE);
PendingIntent configPendingIntent4 = PendingIntent.getActivity(context, REQUEST_CODE_FOUR, configIntent4, 0);
remoteViews.setOnClickPendingIntent(R.id.Button01, configPendingIntent4);


Intent configIntent5 = new Intent(context, Call2.class);
configIntent5.setAction(ACTION_WIDGET_CONFIGURE);
PendingIntent configPendingIntent5 = PendingIntent.getActivity(context, REQUEST_CODE_FIVE, configIntent5, 0);
remoteViews.setOnClickPendingIntent(R.id.Button02, configPendingIntent5);


Intent configIntent6 = new Intent(context, Call3.class);
configIntent6.setAction(ACTION_WIDGET_CONFIGURE);
PendingIntent configPendingIntent6 = PendingIntent.getActivity(context, REQUEST_CODE_SIX, configIntent6, 0);
remoteViews.setOnClickPendingIntent(R.id.Button023 configPendingIntent6);

最佳答案

PendingIntent.getBroadcast(上下文,0, Activity ,0)参数:context 此 PendingIntent 应在其中执行广播的上下文。requestCode 发件人的私有(private)请求代码(目前未使用)。intent 要广播的 Intent。旗帜

您应该使用不同的请求代码。

关于安卓小部件按钮,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/6361962/

26 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com