如何在 Activity 和 widget 之间共享数据?

2023-11-25

我阅读了 hellowidget 教程和开发指南的应用程序小部件。然后我知道如何创建一个包含按钮或文本或其他内容的小部件。

但我真正想做的是让它与我的应用程序交互。例如,我想创建一个具有文本视图的小部件,当我单击它时,它会向我的活动发送一个 PendingIntent,我可以在其中编辑文本。

我可以执行“发送 PendingIntent”步骤。但是当我在活动中编辑文本后,小部件如何读取它?


您需要做的是在 AppWidgetProvider 中注册一个自定义意图,例如 ACTION_TEXT_CHANGED,如下所示:

public static final String ACTION_TEXT_CHANGED = "yourpackage.TEXT_CHANGED";

之后,您需要在 AndroidManifest.xml 中注册您希望在接收者标记的意图过滤器部分中接收此意图,如下所示:

<receiver android:name=".DrinkWaterAppWidgetProvider">
    <intent-filter>
        <action android:name="android.appwidget.action.APPWIDGET_UPDATE" />
        <action android:name="yourpackage.TEXT_CHANGED" />                
    </intent-filter>
    <meta-data android:name="android.appwidget.provider"
        android:resource="@xml/appwidget_info" />
</receiver>

然后,您必须扩展 AppWidgetProvider 中的 onReceive 方法,并确保您像这样处理您的意图:

@Override
public void onReceive(Context context, Intent intent) {
    super.onReceive(context, intent);
    if (intent.getAction().equals(ACTION_TEXT_CHANGED)) {
        // handle intent here
        String s = intent.getStringExtra("NewString");
    }
}

设置完上述所有内容后,您只需在文本更改后在活动中广播意图,如下所示:

Intent intent = new Intent(YourAppWidgetProvider.ACTION_TEXT_CHANGED);
intent.putExtra("NewString", textView.getText().toString());
getApplicationContext().sendBroadcast(intent);

其中“NewString”应更改为您为字符串指定的名称。

我希望它有帮助。

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

如何在 Activity 和 widget 之间共享数据? 的相关文章

随机推荐

  • 如何使用 LINQ to Entity 选择递归嵌套实体

    我有一个名为 Category 的实体 该实体包含一个名为 ChildCategories 的 IEnumerable 一个类别可以有这些子类别 这些子类别可以有自己的子类别 依此类推 假设我已经选择了顶级父类别 我想获取所有子类别及其子类
  • android dlopen() 中的竞争条件?

    我的 Android 应用程序有一个简单的 加载器 NativeActivity 和一个非常简单的android main 它只加载不同的共享对象并将控制权传递给它 typedef void Tandroid main android ap
  • 在表达式开头使用脱字符号 ^ 符号的预处理器宏

    看这个页面 http www mikeash com pyblog friday qa 2010 12 31 c macro tips and tricks html 我找到了这段代码 语法 插入符 括号有什么作用 define MAX x
  • Gulp错误internal/child_process.js:298 throw errnoException(err, 'spawn');错误:生成 EACCES

    我搜索了这个错误的原因 发现我必须更改权限或使用 sudo 运行 gulp 但仍然遇到相同的错误 任何人都可以帮忙吗 内部 child process js 298 抛出 errnoException err spawn 错误 生成 EAC
  • 转义 hstore 包含 JDBC 准备语句中的运算符

    我正在使用带有 hstore 的 PostgreSQL 9 1 4 和PostgreSQL 的 JDBC驱动程序 9 1 901 jdbc4 我正在尝试使用包含运算符 在PreparedStatement中 但是 字符被解析为变量占位符 是
  • Webdriver.io 因 NoSessionIdError 崩溃

    我正在尝试让 webdriver io 和 Jasmine 工作 下列的他们的例子 我的脚本位于test specs first test2 js 根据配置 并包含 var webdriverio require webdriverio d
  • moment-duration-format.d.ts 定义不扩展 Moment 模块

    知道为什么这不起作用或者如何扩展持续时间接口以支持格式功能吗 declare module moment interface Duration format template string precision string settings
  • 导入错误:没有名为 win32api 的模块

    我正在使用 Python 2 7 并且我想使用pywin32 214在 Windows 7 上 我安装了pywin32 214通过使用 MSI 安装程序 但是当我导入时win32api在我的 Python 脚本中 它抛出错误 no modu
  • 如何将多行插入到 SQL Server 并行数据仓库表中

    我使用的是带有 SQL Server 2012 服务器的 PDW AU5 我有一个空的复制表 我正在尝试将数据加载到其中 我只加载 2 条记录 所以 我正在做 INSERT INTO dbo some table Col1 Col2 Col
  • TFS API - 有没有办法获取工作项类型的转换列表?

    我正在尝试从状态 A 到达状态 X 有一些过渡阻止我直接进入 X 我可以将 WorkItemType 导出为 XML 并进行处理 但在这样做之前 我想先问问是否有办法通过 API 获取转换 呜呜 没有多少人需要 WorkItemType 的
  • 如何使用 C API 设置 MySQL 查询超时

    我知道这里有很多类似的问题 当我用谷歌搜索时也有很多结果 但没有一个回答我的问题 我读this this this and this但它们都不适合我 我不谈论任何锁 我不想使用 MySQL C 连接器 只想使用 C API 来做到这一点 另
  • 如何保护 Sitecore 内容树中的整个分支?

    我的内容树中有一个部分 我想拒绝除特定角色之外的所有权限 这似乎是一个非常明显的任务 但我在安全管理员食谱中没有看到它的示例 并且我无法找到使用安全工具来完成此操作的简单方法 我一定错过了一些明显的东西 假设我有这个 sitecore co
  • 如何使用 C# 从字符串中获取特定字符位置

    这是非常基本的问题 但我无法找到特定角色的位置 例如 string a ABCDE 我想要上面字符串中 E 的位置 Use IndexOf var pos a IndexOf E
  • Intellij idea插件开发-热重载?

    我正在为 intellij idea 创建一些插件 每次更改代码时 我都需要重新运行应用程序 有类似热重载或类似的东西吗 或者更有效的方法 我相信您正在寻找运行 gt 重新加载更改的类 通常只要进行一些小的改变就可以很好地工作
  • 使用 Jquery 进行时间验证

    我在用jquery 验证插件验证我的表格 要验证文本输入 我所做的就是编写class required 在属性中 它为我进行验证 现在我正在尝试验证用户必须输入时间 如 02 45 00 AM 的输入 但我正在使用的插件没有任何时间验证功能
  • 如何在 DropWizard 中维护用户会话?

    我正在寻找一个持久会话管理器 它将会话保存在可与 DropWizard 一起使用的文件系统 如 PHP 上 我看到有一个Environment getSessionHandler 但我没有看到任何相关文档 我可以自己写 但我希望能吃到一顿熟
  • 尽快将PageTransformer应用到PagerView

    我将 PageTransfomer 应用于 ViewPager 效果很好 但我想在将 PageTransformer 设置为 ViewPager 后立即启动页面的转换 我已经尝试过 设置当前项目 int setCurrentItem int
  • 使用 Python 时,这段代码中的“wb”是什么意思?

    Code file pinax media a jpg wb 文件模式 写入和二进制 由于您正在编写 jpg 文件 因此看起来不错 但是如果你想读取 jpg 文件 你需要使用 rb 更多信息 在 Windows 上 b 附加到模式后 以二进
  • 将 JTextArea 复制为“text/html”DataFlavor

    我有一个JTextArea我正在使用Highlighter按照下面的 SSCCE 对我的某些文本应用一些语法突出显示 import java awt import java awt event import javax swing impo
  • 如何在 Activity 和 widget 之间共享数据?

    我阅读了 hellowidget 教程和开发指南的应用程序小部件 然后我知道如何创建一个包含按钮或文本或其他内容的小部件 但我真正想做的是让它与我的应用程序交互 例如 我想创建一个具有文本视图的小部件 当我单击它时 它会向我的活动发送一个