窗口小部件ListView内的按钮不会触发广播

时间:2015-06-04 14:21:40

标签: android android-listview android-widget android-pendingintent android-appwidget

My Widget只是一个包含许多元素的ListView。那些应该可以通过ListView点击,因为所有元素都有两个按钮,那些也应该是可点击的。单击按钮时所需的操作是广播,而列表元素单击则应打开一个活动(可以正常工作)。

接收方在Manifest中注册,并具有相应的intent-filter。

RemoteViewsFactory.getViewAt(int position)中这样做是为了添加PendingIntent:

private void registerButtonListener(RemoteViews remoteView, int id, int zoneId) {

    Intent intent = new Intent(WidgetTemperatureReceiver.ACTION);
    intent.putExtra("id", zoneId);
    intent.putExtra("up", id == R.id.buttonTempUp);
    intent.setClassName(WidgetTemperatureReceiver.class.getPackage().getName(), WidgetTemperatureReceiver.class.getName());
    PendingIntent pending = PendingIntent.getBroadcast(context.getApplicationContext(), 0, intent, PendingIntent.FLAG_UPDATE_CURRENT);

    remoteView.setOnClickPendingIntent(id, pending);

}

然而,没有收到任何东西。有什么想法吗?

1 个答案:

答案 0 :(得分:0)

我猜你的包裹名称或类名没有正确传递。

而不是:

intent.setClassName(WidgetTemperatureReceiver.class.getPackage().getName(),
                    WidgetTemperatureReceiver.class.getName());

使用此:

intent.setClass(context, WidgetTemperatureReceiver.class);

其中context是对ActivityService或您正在执行此方法的任何组件的引用。