android - 如何在服务中放置一个 onclick 监听器

标签 android service onclick onclicklistener android-notifications

我试图将此 onClick 监听器放在服务内部,以在服务内部的自定义 xml View 中注册来自 button 的点击一个通知栏。但是 onClickListener 得到编译器错误。有谁知道为什么会出现编译错误?

   RemoteViews remoteviews = new RemoteViews("com.example.test", R.layout.custom_notifications);

     NotificationCompat.Builder mBuilder = new NotificationCompat.Builder(AudioService.this)
               .setContent(remoteviews)
                .setSmallIcon(R.drawable.ic_launcher)
                .setContentTitle("My notification")
                .setContentText("Hello World!")
                .setOngoing(true);



     remoteviews.setOnClickListener(new View.OnClickListener() {

            public void onClick(View v) {

        Toast.makeText(AudioViewer.this, "play button was clicked", Toast.LENGTH_LONG).show();
            }
        });

编译器报错如下图所示:

enter image description here

最佳答案

您需要改用 setOnClickPendingIntent。 RemoteViews 类没有定义 setOnClickListener 方法。

你需要做这样的事情:

this.registerReceiver(new BroadcastReceiver() {
                @Override
                public void onReceive(Context context, Intent intent) {
                    Toast.makeText(AudioViewer.this,
                        "play button was clicked", Toast.LENGTH_LONG).show();
                }
            }, new IntentFilter("MyRemoteViewsBroadcast"));
PendingIntent pi = PendingIntent.getBroadcast(this, 0,
                       new Intent("MyRemoteViewsBroadcast"), 0);
remoteviews.setOnClickPendingIntent(R.layout.custom_notifications, pi);

关于android - 如何在服务中放置一个 onclick 监听器,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/13966485/

相关文章:

android - 小部件的多个实例仅更新最后一个小部件

android - 来自服务器的带有数字标记的谷歌地图

linux - 仅根据某些信号崩溃时如何使用 systemd 重启服务

grails - Grails Controller 和服务中的线程池

php - 错误 4 预期开始标记,未找到 '<'(在 n/a - 第 1 行,第 1 列)

android - 从 ListView 传递到 GridView

java - Android 中的双击缩放

javascript - 单击子 div 时不会调用父 onclick() 事件

javascript - 如何在正确的上下文中将函数传递给单击处理程序?

javascript - 如果出现 "a"事件失败,如何防止 "click"链接释放?