- html - 出于某种原因,IE8 对我的 Sass 文件中继承的 html5 CSS 不友好?
- JMeter 在响应断言中使用 span 标签的问题
- html - 在 :hover and :active? 上具有不同效果的 CSS 动画
- html - 相对于居中的 html 内容固定的 CSS 重复背景?
谁能告诉我我的广播接收器有什么问题,因为它对时间的变化没有反应?当我显示 Toast 消息时,它确实调用了 updateAppWidget 方法,但时钟小部件没有更新时间。
我已经尝试了来自 stackoverflow 的无数解决方案,包括为 TIME_TICK、TIME_CHANGED、TIME_ZONE_CHANGED 添加意图过滤器操作,但到目前为止我还没有运气。我知道我确实已经接近正确的解决方案,但我需要有人为我指明正确的方向。
这是我的 AppWidgetProvider 类代码:
package com.vulterey.nixieclockwidget;
import android.appwidget.AppWidgetManager;
import android.appwidget.AppWidgetProvider;
import android.content.BroadcastReceiver;
import android.content.Context;
import android.content.Intent;
import android.content.IntentFilter;
import android.widget.RemoteViews;
import android.widget.Toast;
import java.time.Instant;
import java.time.LocalDateTime;
import java.time.ZoneOffset;
import java.time.format.DateTimeFormatter;
/**
* Implementation of App Widget functionality.
*/
public class NixieClock extends AppWidgetProvider {
BroadcastReceiver m_timeChangedReceiver = new Synchronize_Time();
public static void updateAppWidget(Context context, AppWidgetManager appWidgetManager,
int appWidgetId) {
int[] numberImage = new int[] {R.drawable.ne_zero,
R.drawable.ne_one, R.drawable.ne_two,
R.drawable.ne_three, R.drawable.ne_four,
R.drawable.ne_five, R.drawable.ne_six,
R.drawable.ne_seven, R.drawable.ne_eight,
R.drawable.ne_nine, R.drawable.ne_double_dot};
// Construct the RemoteViews object
RemoteViews views = new RemoteViews(context.getPackageName(), R.layout.nixie_clock);
// Get current time and format it with use of provided simple date format formatter.
Instant currentTime = Instant.now();
LocalDateTime localDateTime = LocalDateTime.ofInstant(currentTime, ZoneOffset.UTC);
DateTimeFormatter formatter = DateTimeFormatter.ofPattern("HH:mm");
String currentTimeToString = formatter.format(localDateTime);
// Get single digits from currentTime string and convert them into integers.
int TenthsOfHour = Integer.parseInt(currentTimeToString.substring(0,1));
int OnesOfHour = Integer.parseInt(currentTimeToString.substring(1,2));
int TenthsOfMinute = Integer.parseInt(currentTimeToString.substring(3,4));
int OnesOfMinute = Integer.parseInt(currentTimeToString.substring(4,5));
// Display current time by assign numberImage based on time integers to time views.
views.setImageViewResource(R.id.tenthsHourView, numberImage[TenthsOfHour]);
views.setImageViewResource(R.id.onesHourView, numberImage[OnesOfHour]);
views.setImageViewResource(R.id.doubleDotView, R.drawable.ne_double_dot);
views.setImageViewResource(R.id.tenthsSecondView, numberImage[TenthsOfMinute]);
views.setImageViewResource(R.id.onesSecondView, numberImage[OnesOfMinute]);
// Instruct the widget manager to update the widget
appWidgetManager.updateAppWidget(appWidgetId, views);
Toast.makeText(context, "Broacast reciver works", Toast.LENGTH_LONG).show();
}
@Override
public void onUpdate(Context context, AppWidgetManager appWidgetManager, int[] appWidgetIds) {
// There may be multiple widgets active, so update all of them
for (int appWidgetId : appWidgetIds)
updateAppWidget(context, appWidgetManager, appWidgetId);
super.onUpdate(context, appWidgetManager, appWidgetIds);
}
@Override
public void onEnabled(Context context) {
// Enter relevant functionality for when the first widget is created
// Create an intent filter
IntentFilter nixie_intentFilter = new IntentFilter();
nixie_intentFilter.addAction(Intent.ACTION_POWER_CONNECTED);
nixie_intentFilter.addAction(Intent.ACTION_TIME_TICK);
nixie_intentFilter.addAction(Intent.ACTION_TIMEZONE_CHANGED);
nixie_intentFilter.addAction(Intent.ACTION_TIME_CHANGED);
context.getApplicationContext().registerReceiver(m_timeChangedReceiver, nixie_intentFilter);
}
@Override
public void onDisabled(Context context) {
// Enter relevant functionality for when the last widget is disabled
context.getApplicationContext().unregisterReceiver(m_timeChangedReceiver);
}
}
我的BroadcastReceiver类代码:
package com.vulterey.nixieclockwidget;
import android.appwidget.AppWidgetManager;
import android.content.BroadcastReceiver;
import android.content.Context;
import android.content.Intent;
import android.os.Bundle;
public class Synchronize_Time extends BroadcastReceiver {
@Override
public void onReceive(Context context, Intent intent) {
String action = intent.getAction();
Bundle extras = intent.getExtras();
if (extras != null) {
int appWidgetId = extras.getInt(AppWidgetManager.EXTRA_APPWIDGET_ID);
if (appWidgetId != -1) {
if ((action.equals(Intent.ACTION_TIME_TICK)) ||
(action.equals(Intent.ACTION_TIME_CHANGED)) ||
(action.equals(Intent.ACTION_TIMEZONE_CHANGED)) ||
(action.equals(Intent.ACTION_POWER_CONNECTED))) {
NixieClock.updateAppWidget(context, AppWidgetManager.getInstance(context), appWidgetId);
}
}
}
}
}
list 代码:
<?xml version="1.0" encoding="utf-8"?>
<manifest xmlns:android="http://schemas.android.com/apk/res/android"
package="com.vulterey.nixieclockwidget">
<application
android:allowBackup="true"
android:icon="@mipmap/ic_launcher"
android:label="@string/app_name"
android:roundIcon="@mipmap/ic_launcher_round"
android:supportsRtl="true"
android:theme="@style/AppTheme">
<receiver android:name=".NixieClock">
<intent-filter>
<action android:name="android.appwidget.action.APPWIDGET_UPDATE" />
<action android:name="android.appwidget.action.ACTION_TIMEZONE_CHANGED" />
<action android:name="android.appwidget.action.ACTION_TIME_CHANGED" />
<action android:name="android.appwidget.action.ACTION_TIME_TICK" />
</intent-filter>
<meta-data
android:name="android.appwidget.provider"
android:resource="@xml/nixie_clock_info" />
</receiver>
</application>
</manifest>
当小部件启动时,时间设置正确,显然 updateAppWidget 方法启动,但我通过更改充电/不充电状态从 BroadcastReceiver 类调用它,我收到 Toast 消息但保持不变,同时从逻辑上讲它应该更新为updateAppWidget 函数已从 BroadcastReceiver 正确调用。我可以从比我聪明的人那里得到一些建议吗?
最佳答案
好的,我解决了;)
似乎我试图以错误的方式调用小部件的所有实例。在我的 AppWidgetProvider 类中添加 onUpdate 方法后,代码:
ComponentName thisWidget = new ComponentName(context,
NixieClock.class);
int[] allWidgetIds = appWidgetManager.getAppWidgetIds(thisWidget);
并在 BroadcastReceiver 类代码中更改为:
Bundle extras = intent.getExtras();
if (extras != null) {
int appWidgetId = extras.getInt(AppWidgetManager.EXTRA_APPWIDGET_ID);
if (appWidgetId != -1)
至:
ComponentName thisWidget = new ComponentName(context,
NixieClock.class);
int[] allWidgetIds = AppWidgetManager.getInstance(context).getAppWidgetIds(thisWidget);
for (int appWidgetId : allWidgetIds)
一切工作都像一场梦;)
关于java - 为什么我的 updateAppWidget 方法不对所有操作使用react?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/56963114/
我有一个默认的表 white-space : normal想申请white-space: nowrap对于链接到特定 th 的所有 td 元素,但不必将其应用于 元素本身,而不是使用外部 css 文件
我在一篇有关 Version Insight ( http://www.delphifeeds.com/go/s/77066 ) 的博客中读到(除其他外)JCL 没有受版本控制的 .dproj 文件,
我正在打开一个弹出窗口,并希望在其中执行单击操作,从而在打开它的页面中执行一些 jQuery。我在网上找到的所有内容都表明我应该能够使用 window.opener 做到这一点(例如 JQuery -
tablesorter 不适用于主题列,当列包含“-”时,例如: Name Subject Anton - Max "dfdsrv" Anna "fdsf" 但如果我添加带有规范符
我从 web 服务中获取了如下顺序的数据 234,00234,000,00 但是…… 如果 xml 更改为 NSMutableDictionary,它会转到排序顺序。 "Resultat_detail
我想在不执行循环的情况下从 pandas 列的值中提取第一个 3。 所以, df['myCol'][3] 5475 为了提取前 3 位数字,我这样做: int(str(df['myCol'][3])[
我一直读到python有严格的类型检查- >>> 1 + 'hello' Traceback (most recent call last): File "", line 1, in TypeE
在 MySQL 查询中,例如 SELECT * FROM ( SELECT user_id FROM favorites WHERE user_id >1 UNION SELECT user_id F
我有一个 UIScrollView,里面有一些标签。我可以使用按钮将 ScrollView 移动到另一个“页面”。但是当我推得太快时,偏移量不正确。 我将 ScrollView 移动到下一页的代码:
我正在尝试设置 SonarQube在成功构建 Travis 后评论我的 GitHub 拉取请求。 我已经有正常的分析工作。对于拉取请求分析,我还准备了所有 token ,安装了插件等。拉取请求中的问题
这里有一些代码。同样的模式(afaik)适用于英雄教程。 login.component.html: Invalid credentials login.component
我很困惑。我见过一些类似的问题,但没有一个能解决我的问题;所以我在网上抓取了这个脚本,它通过运行 makefile 自动压缩 javascript 文件,如下所示: concatenated.min.
我们在 url 参数中需要一个编码的分号字符,但 angular 不编码这个字符。 我们使用的资源如下所示: app.factory('TestResource', ['$resource', fun
我对 Hibernate 有一个奇怪的问题。我可以从数据库中选择一些东西,但我不能插入或更新任何值。这是我的配置和示例代码,persistance.xml: ****Us
类似于这个问题:group by not-null values我试图只对列 groupID 不为空的记录进行分组: +--+-------+------+-----+-----+----------
这个问题在这里已经有了答案: 关闭 10 年前。 Possible Duplicate: how to not apply opacity for child element? 哪个是设置不透明度的
我在我正在构建的 C++ 应用程序中使用 libtorrent,下载工作完美,但我想在尝试开始下载之前询问跟踪器它已连接的种子和对等点的数量。 我尝试使用 scrape_tracker(),但我从未收
我……很困惑。事情是这样的。我有一个编码为 UNICODE (Little Endian) 的 *ini 文件。在我的 Visual Studio 项目(我自己的 ini 解析器)中,我正在检查文本文
当我将 Linq-to-sql 查询绑定(bind)到 datagridview(在两者之间使用 BindingSource)时,列默认是可排序的。但是, bool 类型似乎并非如此。对于这些数据 G
当我将 iPhone 图像上传到我的 Wordpress 网站时,用 iPhone 拍摄的图像旋转错误。在我的电脑上旋转是正确的,但上传时旋转出错了。 有什么想法吗? 更新:Wordpress UI
我是一名优秀的程序员,十分优秀!