【问题标题】:Button inside a Widget ListView does not trigger BroadcastWidget ListView 内的按钮不会触发广播
【发布时间】:2015-06-04 14:21:40
【问题描述】:

我的 Widget 只是一个包含许多元素的 ListView。这些应该可以通过 ListView 进行点击,并且由于所有元素都有两个按钮,因此它们也应该可以点击。按钮点击所需的操作是广播,而列表元素点击应该打开一个活动(有效)。

receiver在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);

}

但是什么也没收到。任何想法为什么?

【问题讨论】:

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


    【解决方案1】:

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

    而不是这个:

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

    使用这个:

    intent.setClass(context, WidgetTemperatureReceiver.class);
    

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

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 2013-06-28
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2014-04-21
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多