gpt4 book ai didi

Android 主屏幕小部件神秘地无法接收触摸事件

转载 作者:行者123 更新时间:2023-11-29 01:35:48 27 4
gpt4 key购买 nike

我有一个图形有点复杂的 Android 主屏幕(通过 AppWidgetProvider)小部件,我根本无法响应触摸事件。一般的想法是,点击小部件应该会在接下来的 4-5 秒内改变模式以显示不同的信息,但就我的生活而言,它没有显示任何接收到触摸事件的迹象。

我采取的步骤如下:

  1. 我已经在 Manifest.xml 中实现了一个 intent-filter,就像这样...

    <action android:name="foo.kung.fancywidget.TOUCHED" />;

... 它在 <receiver /> 中小部件的容器,就在预期的 APPWIDGET_UPDATE 旁边Android Studio 帮助添加的条目。

  1. 我已确保正在使用的布局在每个元素(为了彻底)包括顶级 RelativeLayout 本身上将 clickable 属性设置为 true。

  2. 我已经在 ExtraFancyWidget.class 的顶部定义了静态字符串,就像这样...

    public static final String TOUCHED = "foo.kung.fancywidget.TOUCHED";
  3. ...根据我一直在阅读的内容,当这样做时,它应该通过 onRecieve 处理程序进行广播...

    if (TOUCHED.equals(intent.getAction())) {
    Log.i("onReceive", "Touch event received");
    }

...但是在 onReceive 处理程序顶部有一个 Log.d 条目,我可以告诉我,除了每十秒从系统服务传来的心跳之外,我根本没有通过那里获得任何类型的信号。

  1. 最后,我正在分配 Intent ,就像我一直在阅读的内容一样

    private PendingIntent createOnClickIntent(Context context) {
    Intent intent = new Intent(context, ExtraFancyWidget.class);
    intent.setAction(TOUCHED); // WHY DOESN'T THIS WORK?!?!?
    return PendingIntent.getBroadcast(context, 0, intent, PendingIntent.FLAG_UPDATE_CURRENT);
    }
  2. ...这实际上是在更新 View 之前在 onUpdate 中发生的最后一件事

    views.setOnClickPendingIntent(R.id.TheWholeWidget, createOnClickIntent(context));
    appWidgetManager.updateAppWidget(appWidgetId, views);

此时我可能忽略或没有看到什么?我不知道我应该做或改变什么才能使这项工作正常进行……它只是神秘地忽略了用户。 ADB 从未向我显示任何表明该小部件曾经看到我点击它的日志条目(尽管它确实显示了许多其他愚蠢的日志消息,所以我知道这是有效的)。

最佳答案

问题出在第 5 步,您在此处创建 Intent 。不要为 Intent 设置特定的类,而是仅使用一个 Action 来创建它,如下所示:

Intent intent = new Intent();
intent.setAction(TOUCHED); // this should work now

或简写

Intent intent = new Intent(TOUCHED);

如果仍然不起作用,请考虑在构建 PendingIntent 时放置一个非 0 的 requestCode。根据您构建的 Android 版本,仅使用 0 时会出现一些错误。

return PendingIntent.getBroadcast(context, 1000, intent, PendingIntent.FLAG_UPDATE_CURRENT);

最后,如果此广播仅在您的应用程序中使用(极有可能),请考虑使用 a LocalBroadcastManager .

关于Android 主屏幕小部件神秘地无法接收触摸事件,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/28141361/

27 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com