按下大视图通知按钮后如何敬酒

Posted

技术标签:

【中文标题】按下大视图通知按钮后如何敬酒【英文标题】:How to toast after pressing a big view notification button 【发布时间】:2016-10-11 18:55:33 【问题描述】:

所以我是 android 开发的新手,我想知道在大视图通知中按下按钮后是否有办法让 toast 弹出。我正在使用意图和 addActions 将按钮添加到通知中,但它们没有任何功能。

按钮说确认和取消。所以现在我想在按下确认后弹出一个显示“状态已确认”的吐司,然后通知将消失。

欢迎任何建议。谢谢。

编辑:

Intent confirmIntent = new Intent(context, MainActivity.class);
        confirmIntent.setAction(""); // ToDo; Add functionality to the confirm button
        PendingIntent piConfirm = PendingIntent.getService(context,0, confirmIntent, 0);

        Intent cancelIntent = new Intent(context, MainActivity.class);
        cancelIntent.setAction(""); // ToDo: Add functionality to the cancel button
        PendingIntent piCancel = PendingIntent.getService(context, 0, cancelIntent, 0);

        // Changed Notification.Builder to NotificationCompat.Builder for
        // Big View Style notification compatibility
        NotificationCompat.Builder mBuilder = new NotificationCompat.Builder(context)
                .setAutoCancel(true)
                .setSmallIcon(R.drawable.notification)
                .setContentTitle(context.getString(R.string.app_name))
                .setLights(0xffffffff, 500, 100)
                .setTicker(context.getString(R.string.app_name))
                .setContentText(alertString)
                .setStyle(new NotificationCompat.BigTextStyle().bigText(alertString))
                .addAction(R.drawable.ic_action_cancel, getString(R.string.cancel), piCancel)
                .addAction(R.drawable.ic_action_ok, getString(R.string.confirm), piConfirm);

这就是我现在所拥有的。如您所见,没有按钮对象,因此不能使用 setOnClickListener 或至少不是我所知道的。我想要它,所以 confirmIntent 启动了祝酒词。 UI 在通知下方显示了两个按钮,分别是“确认”和“取消”,分别由 confirmIntent 和 cancelIntent 处理。

目前,他们什么都不做,我在概念化如何在按钮不是技术按钮时向按钮添加祝酒词时遇到了麻烦。

此外,这是在服务类中,而不是活动或片段。

【问题讨论】:

显示您的代码并指出代码中应该触发 toast 的内容。 显示您尝试过的内容。 我添加了一些代码 正如你所说,“按钮说确认和取消。”。现在,在 'addAction(R.drawable.ic_action_ok, getString(R.string.confirm), piConfirm);' 行中使用的 pendingintent -- 点击“确认”时会触发 piConfirm。这个pendingintent 启动一个服务。所以显示该服务的吐司。 【参考方案1】:

试试这个

confirmButton.setOnClickListener(new OnClickListener() 
    public void onClick(View v)
    
       Toast.makeText(context, "Status Confirmed", TOAST.LENGTH_SHORT).show();
     
);

【讨论】:

事情就是这样。这些按钮不是按钮类型,所以除非您知道如何将 .setAction 和 .addAction 更改为按钮,否则我不能使用 setOnClickListener。 我也或多或少地将其用作模板developer.android.com/training/notify-user/expanded.html【参考方案2】:

5 年后,我遇到了这个问题,建议的解决方案对我不起作用。

有效的是创建一个自定义BroadcastReceiver,然后从那里显示吐司。

Intent intent = new Intent(context,YourBroadcast.class);
PendingIntent pendingIntent = PendingIntent.getService(context,0, intent, 0);

Notification notification = new NotificationCompat.Builder(context, YOUR_NOTIFICATION_CHANNEL)
            ...
            .addAction(R.drawable.my_icon, context.getString(R.string.click_me), pendingIntent)
            .build();

在您的接收器中

@Override
public void onReceive(Context context, Intent intent) 
    Toast.makeText(context,"I made it!",Toast.LENGTH_LONG).show();

别忘了在 Manifest 中注册您的接收器。

【讨论】:

以上是关于按下大视图通知按钮后如何敬酒的主要内容,如果未能解决你的问题,请参考以下文章

用户按下排序按钮后如何在列表视图中显示排序列表?

按下锁定/主页按钮时的通知,单击返回选项卡片段时的通知

单击通知按钮后如何关闭状态栏/通知面板

OneSignal 按下推送通知去一个视图控制器 iOS Swift

按下 UINavigationController 后如何将编辑按钮添加到 UINavigationBar

在android中按下后退按钮后如何返回相同的选项卡?