按 HOME 按钮不会从配置活动返回小部件 ID

2024-04-27

Error: appWidgetId (EXTRA_APPWIDGET_ID) was not returned from the \widget configuration activity.

public class WidgetConfigure extends Activity {

private int widgetID;

@Override
protected void onCreate(Bundle savedInstanceState) {
    super.onCreate(savedInstanceState);
    Log.v("Lifecycle", "WidgetConfigure.onCreate");
    setContentView(R.layout.widget_configure);
    widgetID = this.getIntent().getExtras().getInt(AppWidgetManager.EXTRA_APPWIDGET_ID, AppWidgetManager.INVALID_APPWIDGET_ID);
    setResult(RESULT_CANCELED, new Intent().putExtra(AppWidgetManager.EXTRA_APPWIDGET_ID, widgetID));
}

public void onButtonClicked(View view) {
    Log.v("Lifecycle", "WidgetConfigure.onButtonClicked");
    if (((RadioButton) this.findViewById(RefreshStrategy.SYSTEM)).isChecked()) {
        WidgetProvider.configure(widgetID, true);
    } else if (((RadioButton) this.findViewById(RefreshStrategy.USER)).isChecked()) {
        WidgetProvider.configure(widgetID, false);
    }
    setResult(RESULT_OK, new Intent().putExtra(AppWidgetManager.EXTRA_APPWIDGET_ID, widgetID));
    finish();
}
}

理论上RESULT_OK应在活动中按下按钮后发送RESULT_CANCELED在任何其他情况下,但当按下设备上的物理按钮 HOME 时,不会发生这种情况。

有什么想法如何解决这个问题吗?


这不是您的代码中的问题 - 这是正常的、标准的 Android 行为。 (也许是一个错误?)


我找不到它的记录,但如果您尝试添加需要配置的 Google 小部件,然后按 HOME,您会发现小部件未添加。在某种程度上,我们可以将 HOME 键视为取消按钮。

今天的大部分时间我都在想我自己的代码有一个错误,并寻找一种方法来修复它。

如果有的话,我相信这可能是框架中的一个错误,因为结果根本没有交付。此外,如果我启动一个新的,我也会遇到类似的失败Activity从配置活动中退出,然后从那里退出。


FWIW 我在 Galaxy Nexus 4.2.1 上收到该错误消息;但在 Nexus 7 4.4.2 上,未显示错误,但行为是相同的。


Update:根据 Dianne Hackborn 的说法,这是预期的行为,至少从用户的角度来看是这样:

应用程序小部件的正常体验将提供 配置 UI 是按返回或主页将取消 添加。

  • 应用程序小部件配置活动的行为与活动不同 https://stackoverflow.com/a/9946957/383414

因此,作为开发人员,这可能看起来很奇怪,但作为用户,最终一切都很好。

本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)

按 HOME 按钮不会从配置活动返回小部件 ID 的相关文章

  • 如何在没有 SyncAdapter 的 Android 上实现帐户

    我正在利用内置帐户系统 使用 AccountManager API 为 Android 应用程序实现一个登录系统 在 Android 2 2 上一切都很好 但在 Android 2 1 上不包含 SyncAdapter 会导致帐户设置屏幕中
  • GCM 通知的自定义 UI

    In GCM Docs http developer android com google gcm gcm html其给定 它不提供任何内置用户界面或其他处理 消息数据 GCM 只是将收到的原始消息数据直接传递给 Android 应用程序
  • 如何在 Android 中以编程方式配置启动器活动?

    我正在开发一个具有两项活动的应用程序 LoginActivity and MainActivity 当用户首次打开应用程序时 他将登录并且他的凭据 用户名和令牌 保存在Preferences 现在 如果用户再次打开应用程序MainActiv
  • 不支持动态值作为注释中的属性 - AspectJ Android [AOP Android]

    我正在使用自定义注释来记录用户单击的 id 但我收到一个错误 属性值必须是常量 我的代码片段如下 mAssetId Asset getContentId TrackEvent track event ArrayParams Params k
  • 如何设置itemTouchHelper选择性滑动?

    所以我在 recyclerview rv 上实现了这个 itemtouchhelper simple 回调 现在 在这个 rv 中 我根据内容类型将 2 种布局设置为一行 因此 当我在 rv 上设置此 touchhelper 时 它正在这两
  • Android ACTION_DATE_CHANGED 广播

    我有 Nexus S 当我在手机上手动更改日期时 ACTION DATE CHANGED 并不总是被广播 如果我将日期从 2014 年 2 月 13 日更改为 2014 年 2 月 14 日 我还没有获得 ACTION DATE CHANG
  • Gson.toString() 给出错误“IllegalArgumentException:多个名为 mPaint 的 JSON 字段”

    我想将自定义对象转换为字符串并保存在 SharedPreferences 中 这是我的最终目标 我尝试了下面的行但失败了 String matchString gson toJson userMatches Logcat 10 11 15
  • 使用 ArrayAdapter 的 ListView 中的按钮

    我有一个使用 POJO 类填充的 ArrayAdapter 列表视图由 2 个布局组成 1 代表菜单项 1 代表类别 带分隔符的列表视图很好 后来我尝试在每个菜单项行中添加一个按钮来编辑其中的详细信息 当我尝试获取单击按钮的行的位置时 我遇
  • 无法打开本地终端

    我尝试在 Android Studio 中初始化我的终端 但它给了我错误 它说 无法打开本地终端 java io IOException 无法创建 PTY 我的电脑运行的是 Windows 10 如何解决这个问题 当您从 Github 存储
  • 使用反向无限滚动添加到 ListView 时保持滚动位置

    我正在构建一个类似聊天的 Android 应用程序 类似于环聊 为此 我使用垂直 ListViewstackFromBottom true and transcriptMode normal 该列表按从较旧的消息 顶部 到较新的消息 底部
  • 使用 appcelerator titan 在 android 中后退按钮退出应用程序

    我是钛开发的新手 在本机 android 中 如果我们按下后退按钮 则仅当前活动将被关闭 并且它将返回到上一个活动 但是当我使用 Titanium 在 Android 中按下后退按钮时 它会从应用程序退出 我怎样才能改变这种行为 有两种类型
  • 如何使用RecyclerView.State保存RecyclerView滚动位置?

    我有一个关于 Android 的问题RecyclerView State http developer android com reference android support v7 widget RecyclerView State h
  • Android 可检查子菜单选项

    所以我有一个用于选项菜单项的子菜单 我想要一个可检查条目的列表 用户可以根据需要选择 取消选择多个条目 我无法解决的唯一问题是如何防止单击其中一个复选框时关闭选项菜单 我看到 PerformShortcut 有一个 FLAG PERFORM
  • EditText 不显示当前输入(Android 4)

    我的 Android 应用程序包含一个EditText http developer android com reference android widget EditText html查看可以在其中键入一些短消息 单行 按键盘的DONE键
  • 为什么设置 MediaRecorder 时显示错误 IllegalStateException?

    我的代码设置 MediaRecorder 它显示行集质量错误 mMediaRecorder new MediaRecorder Step 1 Unlock and set camera to MediaRecorder mCamera st
  • 上次更新arm64-v8a后,模拟器在M1 Mac上显示离线

    昨天模拟器运行得很好 系统镜像为arm64 v8a 我不太记得工作系统映像的版本名称 但是昨天我接受了 ARM 64 系统映像的更新 版本名称是 S 我可以从 AVD 管理器启动模拟器 当我按 运行应用程序 按钮时模拟器也会启动 但是 该应
  • 从 Activity 调用选项卡式片段方法

    我有一项活动由三个片段组成 这些片段使用使用 PagerAdapter 的操作栏选项卡 我想要做的是从主活动访问活动选项卡式片段中的方法 我已经尝试了下面的代码 但这只是将片段返回为空 所以我猜它无法在选项卡中找到它 NPListFragm
  • Android 可扩展 GridView 就像 Google 图像一样

    我想创建可扩展的 GridView 其行为类似于 Google 图像页面 我想知道如何实现这样的功能 当我单击其中一张图像时 页面会展开并显示图片的详细信息 Android 中是否可以做类似的事情 Images grid Expanded
  • Android应用程序中的模式输入

    我想知道是否有其他替代方案可以替代 Android 上平庸的 EditText 密码输入 是否有 API 或开源代码可以集成到我的应用程序中 类似于锁屏图案解锁 Intent 可能会返回哈希值 数字 字符串或代表用户输入的模式的任何内容 我
  • 如何在对话框中配置自定义按钮?

    这里我有一个自定义对话框 里面有背景 2 ImageButton 问题是 当我尝试为该按钮设置 onclick 侦听器时 程序将返回 NullPointerException 我不知道为什么会发生这种情况 无论如何如何将操作分配给对话框内的

随机推荐

  • 如何处理 pcntl_fork(): 错误 35?

    我有 php7 CLI 守护进程 它连续解析文件大小超过 50M 的 json 我试图使用 pcntl fork 的单独进程将每 1000 个解析数据条目保存到 mysql 对于约 200k 行 它工作得很好 然后我得到pcntl fork
  • “修补”rails 渲染函数来编辑默认选项

    当我在 Rails 中渲染 xml 时 我总是想要 dasherize gt false 选项 有没有办法将其设置为应用程序范围的默认值 当然无需修改 Rails 源代码 也许一个渲染函数以某种方式优先于第一个函数 然后使用此选项调用它 这
  • 如何隔离特定的颠覆修订版?

    我有一个已提交给 SVN trunk 的修订版 我想回滚它 但是 我想以某种方式保留更改 例如分支甚至补丁文件 有什么建议么 反向合并 我认为这就是这个术语 提交 仅此而已 对于 反向合并 部分 TSVN 有一个很酷的功能 称为 恢复到此版
  • 什么时候使用nonlocal关键字? [复制]

    这个问题在这里已经有答案了 我不明白为什么我可以在这里使用系列变量 def calculate mean series def mean new value series append new value total sum series
  • 在 Node.js 中获取父目录名称

    我正在使用 Node js 并且我想获取某个目录的父目录名称 文件 我有文件 test1 folder1 FolderIWant test txt 我想要得到 FolderIWant 我努力了 var path require path v
  • Apache Poi 无法读取工作表名称

    我们在通过 Apache Poi 读取 Excel 工作表时遇到了一个奇怪的错误 我们使用的是5 0版本 该代码以前可以工作 但现在已停止在我们所有的生产环境中工作 它在本地测试时仍然有效 因此事实证明这很难调试 问题是我们返回了空工作表名
  • powershell中的&符号是什么意思?

    tool C Program Files gs gs9 07 bin gswin64c exe tool q dNOPAUSE sDEVICE tiffg4 param r300 pdf FullName c quit 有人可以向我解释这是
  • ...未定义引用...collect2:ld返回1退出状态[重复]

    这个问题在这里已经有答案了 我在编译时遇到一些错误 我不明白为什么 我的 heapsort h 应该有导出类型吗 堆排序 c include
  • DataGridTemplateColumn 内的绑定命令

    我使用命令将视图 包括 XAML 附加到我的 ViewModel 当单击 DataGrid 行上的按钮时 我需要调用命令 我正在为此使用行为 常规命令也有同样的问题 当我单击 DataGrid 上的按钮时 我的命令不会被触发 为了说明问题
  • 通过selenium在firefox中打开私有模式

    实际上我想通过selenium打开firefox浏览器的隐身 私密模式 但每次我尝试时都是以正常模式打开firefox 经过一番谷歌搜索后 我得到了这段代码 我用它通过 selenium 在 Firefox 中打开私有模式 但它不起作用 F
  • 应用因 iCloud 备份标记而被拒绝

    我的应用程序有一些应用内购买 可将视频内容下载到 Documents 文件夹 我最近提交了应用程序的更新 但被拒绝了 因为我没有将视频文件标记为不备份到 iCloud 我成功地实现了标记 但我仍然对苹果文档中的这一声明感到困惑 重要 新的
  • Python 替换嵌套 JSON 中的 None 值

    我一直在尝试替换下面 JSON 字典中的 None 值 我将如何遍历这个 json 并将 None 值替换为空字符串 我很难理解如何遍历嵌套 json 如果有人能帮我解决这个问题 我会很高兴 下面的嵌套 json 示例 或者在 python
  • NullPointerException 自定义列表视图适配器

    你好 stackoverflow 社区 我在扩展 BaseAdapter 的自定义适配器类的 getView 方法中得到了一个 NPE 我希望你可以帮助我 这是我的 getView 方法 Override public View getVi
  • Android:Json 无法从 mysql 数据库检索任何文件,它是空的

    我是 android 新手 我正在使用 mysql 数据库 其中我链接 php 文件进行连接 工作正常 但我的代码没有显示任何内容 它只显示背景色黑色 而不是显示数据库中的数据 public class HomeFragment exten
  • 具有特定深度的 TypeScript 递归类型

    TypeScript 允许您编写递归类型 但无法深入了解代码在较低级别 即深度 中如何变化 例如 下面的代码在所有级别上都具有相同类型的签名 并且我们必须在每个级别手动检查是否存在sub财产 type Recurse foo string
  • PHP - 搜索字符串中的特定单词数组并与可选的 + 或 - 匹配

    我需要在字符串中搜索特定单词并将匹配结果作为变量 我在数组中有一个特定的单词列表 names array Blue Gold White Purple Green Teal Purple Red drag Glowing looks to
  • 如何使用反射或其他准确方法获取控制器内当前的 ASP.NET Core 控制器方法名称

    我想获取我的当前方法名称ASP NET Core控制器 我尝试通过反射获取方法名称 HttpGet public async Task
  • 从“(signed) -1”到“unsigned long”的转换是否标准化? [复制]

    这个问题在这里已经有答案了 In 这个答案 https stackoverflow com a 51234964 65863 你可以找到这条评论 https stackoverflow com questions 40608111 why
  • 将密钥添加到选定的密钥集中

    我正在编写一个 NIO 服务器 并希望响应用户请求 即将一些数据写入通道 Selector selector if selector selectNow 0 if key isReadable SocketChannel channel k
  • 按 HOME 按钮不会从配置活动返回小部件 ID

    Error appWidgetId EXTRA APPWIDGET ID was not returned from the widget configuration activity public class WidgetConfigur