从一个 dagger 2 模块如何访问另一个 dagger 2 模块中提供的 SharedPreferences

2024-01-04

从一个 dagger2 模块提供 SharedPreferences 后,在另一个 dagger2 模块中想要使用它,
怎么做?

下面的代码似乎不起作用。

/** 组件 */

@Singleton
@Component(modules = arrayOf(DataManagerModule::class, 
                             AnotherModule::class))
interface DataManagerComponent {
    fun getDataManager() : DataManager
    fun getSharedPreferences() : SharedPreferences
}

/** 模块1 */

@Module
class DataManagerModule(@ApplicationContext private val appContext: Context) {

    @Singleton
    @Provides
    @ApplicationContext
    fun provideApplicationContext(): Context = appContext

    @Singleton
    @Provides
    fun provideSharedPreferences(): SharedPreferences {
        return appContext.getSharedPreferences(appContext.packageName, 
        Context.MODE_PRIVATE)
    }
}

/** 模块2 */

@Module
class AnotherModule(private val config1: String?, private val config2: Int?) {

    @Provides
    @Singleton
    internal fun provideClass2(context: Context): Class2 {

        if (config2 == null) {

            // how to get the preferences???
            // getSharedPreferences().edit().getInt(Constants.Settings, -1)

        }

        return class2(config1, config2, context)
    }
}

由于所有这些工件共享相同的范围,并且该组件是使用两个模块构建的,因此您应该能够简单地添加SharedPreferences作为参数provideClass2()为了在构建中使用它Class2,像这样:

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

从一个 dagger 2 模块如何访问另一个 dagger 2 模块中提供的 SharedPreferences 的相关文章

  • Fused Location Provider 是不错的选择吗?

    我正在开发一个应用程序 我想在其中使用融合位置提供程序 但我有一些疑问 还有几个问题 当 GPS 关闭并且我将优先级设置为 HIGH 时 是否意味着 GPS 会自动打开 我可以根据需要将 UpdateLocation 设置为具有高优先级的
  • Mediaplayer 播放几次后停止播放

    我有一个按钮 按下它会播放一个随机声音剪辑 然后播放另一个声音剪辑 然后通过一个媒体播放器播放另一个声音剪辑 但是多次按下该按钮 15 20 次 后 所有音频都会停止 我在播放最后一个音频剪辑后释放媒体播放器 所以我不认为这是原因 有什么指
  • 如何在android中使用retrofit访问404错误?

    我正在使用改造 2 访问 REST API 以使用原始正文插入 JSON 数据 我从服务器获得成功响应 但在响应时收到 404 错误 我想访问404错误请帮我解决这个问题 ApiUtil getServiceClass sendFinalC
  • 有没有办法获取 Android 扩展文件中特定文件的 Url?

    我正在构建一个 PhoneGap 应用程序 其中包含大型音频和视频文件 在 Android 中 媒体文件应位于扩展文件中 以使应用程序大小保持在 Google Play 50 MB 限制以下 我目前正在考虑两种播放视频文件的方法 将所需的视
  • 为什么抽屉布局中的视图强制缩放以填充屏幕

    这是我的测试代码
  • 如何在android 4.2中显示选项菜单

    我正在尝试在我的测试应用程序中创建菜单选项 当我将清单中的主题设置为默认时 我可以看到菜单 菜单显示在顶部 如果我将清单中的主题设置为 NoTitleBar 我看不到菜单选项 我想在清单中设置主题 NoTitleBar 时获取菜单 如何修复
  • 如何解决 FireBase 数据库 Key 中的禁止字符或解决方法

    我有这个 FireBase 数据库结构 我真的很想拥有像这个例子这样的密钥 US name United States PATH TO STREETS US California Orange County Orange 3138 E Ma
  • 从 JSON 数组创建标记 php mySQL Google Maps v2 android

    我正在尝试从 mySQL 数据库在 Google Maps v2 上创建标记 但它不起作用 地图确实出现了 但没有标记 谁能告诉我出了什么问题以及我需要改变什么 我也尝试过让 getDouble 为 getDouble 0 和 getDou
  • 长按 HOME 按钮菜单隐藏 Android 应用程序

    我想从 且仅从 完成后长时间按住 HOME 按钮时出现的菜单中隐藏我的 Android 应用程序 有没有办法做到这一点 以编程方式调用 finish 并不能解决问题 有很多关于从启动器和任务管理器隐藏应用程序的线程 但这不是我想要的 我只是
  • webView.loadUrl 显示空白屏幕

    我必须加载这些通过使用下面的代码 但最终显示空白屏幕作为输出 您可以检查url代码之间的链接位于last line WebPagerLoader java public class WebPageLoader extends Activit
  • 点击按钮时的 Admob 插页式广告

    我有一个应用程序 我正在使用 admob 横幅 现在我想在点击按钮时显示插页式广告 我的应用程序有 2 个活动 我想在第二个活动上显示插页式广告 第二个活动有一个返回第一个活动的按钮 我想在单击按钮后显示广告 我可以在单击按钮时显示广告 但
  • 如何修补更新 Android Studio (0.80 -> 0.81)?

    我安装了 Android Studio Beta v0 8 0 并下载了 v0 8 1 因为 IDE 不会自动下载 v0 80 并使用新版本修补 Android Studio 的预览系列自动做到了这一点 从他们的网页 http tools
  • 短信管理器在少于 160 个字符时发送多部分消息

    我编写了一个使用短信管理器的应用程序 我用的方法sendTextMessage 但这行不通 现在我正在使用sendMutlipartTextMessage 这是工作 但当它大约 60 个字符时 它会发送多部分消息 这个是正常的 我读过的所有
  • Android 4.2以下如何设置layoutDirection为RTL

    尝试将布局元素设置为 RTL 顺序 4 2 及以上行 layoutDirection rtl 并在清单中 android supportsRtl true 工作得很好 但对于 4 2 以下则不然 解决方案有人吗 只需使用视图兼容使用 and
  • 找不到元素“android.support.constraint.ConstraintLayout”的声明

    我创建了一个名为的 xml 文件activity main sw50dp 但是当我尝试验证它时 它给了我错误 错误 4 42 cvc elt 1 a 找不到元素 android support constraint ConstraintLa
  • 是否可以在本机代码中读取/编辑共享首选项?

    我有一个 Android 应用程序 其中包含一个使用 NDK 执行一些代码的 C 库 在 C 库中 我想更新应用程序共享首选项 我的问题 是否可以在本机代码中读取 编辑共享首选项 您可以在本机代码中做任何您想做的事情 这只是很麻烦 您需要
  • 无法获取 android.permission.CLEAR_APP_USER_DATA

    我正在开发需要特殊权限的系统应用程序 由于某种原因 我无法获得 CLEAR APP USER DATA 权限 但我可以使用 INSTALL PACKAGES DELETE PACKAGES 等 什么可能导致这种情况 显现 uses perm
  • Android - 按下后退按钮时停止 AsyncTask 并返回到上一个 Activity

    我有一个 AsyncTask 我希望它在按下后退按钮时停止执行 我还希望应用程序返回到之前显示的 Activity 看来我已经成功停止了任务 但应用程序没有返回到之前的活动 有任何想法吗 这是我的代码的摘录 private class My
  • 加载 highchart 时 Android 错误膨胀类

    我正在尝试加载highcharts via Dialog 下面是我的代码 Gradle implementation com highsoft highcharts highcharts 9 0 1 XML
  • 在edittext android中插入imageview

    我想将 imageview 放在 edittext 中 可能吗 我检查了 evernote 应用程序 它能够将照片放在编辑文本部分 我想让我的应用程序完全相同 我如何才能将从图库中选择的图像视图放入编辑文本中 我首先尝试将 imagevie

随机推荐

  • 在 AddObject 之后、在 SaveChanges 之前查询对象?

    在实体框架中 是否可以在调用 SaveChanges 方法之前查询刚刚使用 添加对象 添加到上下文的对象 Thanks 要持久化一个实体 您通常将其添加到它的DbSet在上下文中 例如 var bar new Bar bar Name fo
  • Git 中的 HEAD^ 和 HEAD~ 有什么区别?

    当我在 Git 中指定祖先提交对象时 我很困惑HEAD and HEAD 两者都有一个 编号 版本 例如HEAD 3 and HEAD 2 它们对我来说看起来非常相似或相同 但是波浪号和插入符号之间有什么区别吗 经验法则 Use 大多数时候
  • 使用自定义适配器时如何获取 onItemClick(ListView) 中行的 id?

    我搜索了一段时间但找不到解决方案 情况 我正在使用一个ListView我有一个CursorSQLiteDatabase query 的结果 如果我使用一个SimpleCursorAdapter 什么时候 你打电话onItemClick Ad
  • R:重新思考数据(如何重新排列一组列中的一列?)

    我有这样的表 A B C 1 a b 1 2 a b 2 3 a b 3 4 a2 b1 1 5 a3 b2 3 例如 A 列 是一个属 例如E B 列是一个物种 E coli C 列是项目的类别 无关紧要 所以我需要了解 项目 b 由多少
  • 使用gunicorn和Flask时出现CSRF令牌错误

    我开发了一个网络应用程序 其中包含用户登录和注册的功能 我已经按照文档和教程完成了所有操作 并且 Flask 服务器一切正常 问题是 我使用gunicorn并启动一个Web服务器 打开地址 localhost 8000 在几种不同的浏览器
  • 自定义 MKAnnotation 标注视图?

    我有一个MKPointAnnotation let ann MKPointAnnotation self ann coordinate annLoc self ann title Customize me self ann subtitle
  • Oracle 将行转为列[重复]

    这个问题在这里已经有答案了 我有以下表格 TABLE1 id name 1 n1 2 n2 TABLE2 id tipo valor 1 t1 v1 1 t2 v2 2 t1 v1 2 t2 v5 2 t3 v3 我试图得到 id name
  • 如何在 Django JSONField 中过滤 JSON 数组

    我对在 Django 2 0 3 中过滤 postgres JSONField 感到疯狂 json 以数组形式存储 例如 tasks task test level 10 task test 123 level 20 我尝试过的 myMod
  • grails图像绝对路径

    我的标题模板中有这张图片 img src images slide 1 jpg alt width 175 height 77 当从 main 目录内的 gsp 文件使用模板时 将加载图像 不过 如果我在控制器内的 gsp 文件中使用相同的
  • ProcessBuilder调试

    我创建了一个可执行 jar 并使用另一个 java 程序的进程构建器执行它 这是我的代码 public class SomeClass public static void main String args Process p null P
  • VB.NET 相当于 C# 的 using 指令

    我正在将一些代码从 C 转换为 VB NET 并且我需要知道 C 的 using 指令的等效项是什么 Update 抱歉 但到目前为止我还没有得到答案 这是一个 C 示例 using moOutlook Microsoft Office I
  • 在 .NET MVC4 中调用本地 Web 服务时出现 HTTP 404 错误

    我正在尝试学习 NET mvc4 中的 Web 服务 我尝试创建一个新的 Internet 应用程序并向该项目添加一个 Web 服务 asmx 默认情况下 VS 添加一个 HelloWorld Web 服务 当我尝试在浏览器中运行它时 我确
  • jasmine需要sinon.js吗?

    我在网上看到过人们使用的例子jasmine http pivotal github com jasmine 和 一起sinon http sinonjs org 然而 茉莉支持间谍 据我所知 诗乃就是这么做的 那么问题来了 诗浓在使用茉莉花
  • 由于 COMMAND_LINE_LOGGING_LEVEL 原因,无法导入 Markdown

    我遇到了一个奇怪的错误 我可以在 Python 中导入 markdown 并且可以在 Django runserver 内的 python 中导入 markdown 但是当尝试在 Gunicorn 的应用程序服务器内导入 markdown
  • 找不到网络浏览器:无法找到可运行的浏览器。 Jupyter笔记本

    Jupyter notebook 无法打开网络浏览器 之前用的好好的 后来windows 10提示更新后就开始在Microsoft Edge中打开了 当我尝试将其更改为默认浏览器 chrome 时 它根本无法打开 我跟着如何在 Window
  • 用于 Excel 克隆的正确数据结构

    假设我正在使用 C 开发 Excel 克隆 我的网格表示如下 private struct CellValue private int column private int row private string text private L
  • 如何卸载 Perl 模块?

    我在我的 Linux 机器上安装了一些 Perl 模块 如果我输入perldoc perllocal它显示了我的机器中安装的 Perl 模块的列表 但现在我不需要这些 Perl 模块 所以我想删除它们 有谁知道如何卸载或删除Linux de
  • PHP - 比较两个多维数组

    我有两个包含数据的数组 我需要比较这两个数组并创建一个最终数组 这是我的情况 grab a list of the folders folders glob GLOB ONLYDIR create empty array s which w
  • 重试 Visual Studio C# 测试方法

    我很好奇是否有任何内置机制可以retry在 Visual Studio 2008 C 单元测试框架中进行测试 举个例子 我有一个 C 单元测试 如下所示 TestMethod public void MyMethod DoSomething
  • 从一个 dagger 2 模块如何访问另一个 dagger 2 模块中提供的 SharedPreferences

    从一个 dagger2 模块提供 SharedPreferences 后 在另一个 dagger2 模块中想要使用它 怎么做 下面的代码似乎不起作用 组件 Singleton Component modules arrayOf DataMa