将 onClickListener 设置为小部件中的按钮 [重复]
Posted
技术标签:
【中文标题】将 onClickListener 设置为小部件中的按钮 [重复]【英文标题】:Set onClickListener to a button in widget [duplicate] 【发布时间】:2015-02-18 08:09:29 【问题描述】:我有一个只有一个按钮的小部件。我读到 Listener 应该这样设置:
RemoteViews views = new RemoteViews(context.getPackageName(), R.layout.widget);
views.setOnClickPendingIntent(R.id.button1, pendingIntent);
但我有这个代码:
try
sr = SpeechRecognizer
.createSpeechRecognizer(context);
sr.setRecognitionListener(new MainActivity().new listener());
Intent intent = new Intent(
RecognizerIntent.ACTION_RECOGNIZE_SPEECH);
intent.putExtra(RecognizerIntent.EXTRA_LANGUAGE_MODEL,
RecognizerIntent.LANGUAGE_MODEL_FREE_FORM);
intent.putExtra(RecognizerIntent.EXTRA_CALLING_PACKAGE,
"voice.recognition.test");
intent.putExtra(RecognizerIntent.EXTRA_MAX_RESULTS, 5);
sr.startListening(intent);
catch (Exception e)
Toast.makeText(context, "Exc: " + e, Toast.LENGTH_LONG).show();
那应该是 onClick 事件.. 我不能让它成为一个待定的意图..
有什么想法吗? :)
【问题讨论】:
【参考方案1】:您可以在您的小部件提供程序中处理PendingIntent
。
以下是示例:
1) 设置按钮点击的意图:
final Intent intentButton = new Intent(context, MyWidgetProvider.class);
intentButton.setAction(ACTION_MY_BUTTON);
final PendingIntent pendingIntentButton =
PendingIntent.getBroadcast(context, 0, intentButton, PendingIntent.FLAG_UPDATE_CURRENT);
remoteViews.setOnClickPendingIntent(R.id.widgetButtonId, pendingIntentButton);
2) 在MyWidgetProvider
中处理意图:
@Override
public void onReceive(final Context context, final Intent intent)
super.onReceive(context, intent);
final String action = intent.getAction();
if (ACTION_MY_BUTTON.equals(action))
// Do your stuff here!
【讨论】:
以上是关于将 onClickListener 设置为小部件中的按钮 [重复]的主要内容,如果未能解决你的问题,请参考以下文章
在 QGraphicsScene 上为小部件设置系统背景的背景颜色
如何在 Android Studio 中为小部件设置不高度?
Flutter:在从小部件树中删除时或在其生命周期结束时为小部件设置动画?