将 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:在从小部件树中删除时或在其生命周期结束时为小部件设置动画?

是否可以为小部件设置标准样式?

Django 2.0 ModelForm dateField 不显示为小部件

在页脚区域中为小部件添加第四列