如何在 Roboguice 中通过构造函数注入参数? [安卓]

2024-01-01

这个问题可能与这个问题完全相同使用 Guice 将参数传递给构造函数 https://stackoverflow.com/questions/9237996/pass-parameter-to-constructor-with-guice

不同之处在于我使用 android 版 roboguice,而不仅仅是 Guice,所以那里的答案对我不起作用。

问题是 - 如何将初始化参数传递到创建的对象中? IE。我已经注入了接口,该接口应该使用 roboguice 不知道的一些参数进行初始化。

我在提供的链接中看到的,我应该创建工厂接口并像这样注册它

  void configure(Binder binder) {
   binder.install(new FactoryModuleBuilder()
         .implement(FooInterface.class, Foo.class)
         .build(FooFactory.class));
  }

但我找不到工厂模块构建器班级。我使用 Intellij IDEA,它可以向我显示我可以在当前位置访问的每个类,并且我可以 100% 确定不存在以以下开头的类'工厂' word.

如何使用 roboguice 创建我的工厂?

UPDATED

我忘记下载了指导辅助注射 http://search.maven.org/#artifactdetails%7Ccom.google.inject.extensions%7Cguice-assistedinject%7C3.0%7Cjar。但我仍然不知道该在哪里注册这个工厂。

UPDATE 2

为什么我需要那个?因为应该存在某些抽象具有 Roboguice 无法解决的依赖关系的情况。这种依赖关系可以是任何类型,甚至是简单的字符串或数字。

就我而言,我在 UI 上有 NumberPicker 控件,并且我想将所有 UI 特定任务移至我的号码选择器包装器班级。当我创建这个包装器时,我通过构造函数注入它的依赖项(此控件)。

如果我对这种方法正确的话,这不是重点,但可能还有很多其他更适用的示例,其中需要构造函数注入,并且 Roboguice 无法创建此注入的类


我按照中给出的答案的步骤进行操作使用 Guice 将参数传递给构造函数 https://stackoverflow.com/questions/9237996/pass-parameter-to-constructor-with-guice并做了一些修改以在 roboguice 下运行它。对我来说完全没问题。

  1. add 指导辅助注射库到 gradle 脚本

    dependencies { compile 'com.google.inject.extensions:guice-assistedinject:4.+' }
    
  2. 创建工厂接口,其创建方法接受对象构造函数所需的参数并返回对象的接口

    public interface ICustomObjectFactory {
        ICustomObject create(String queueName);
    } 
    
  3. Add @Inject对象构造函数的注释和@协助来自工厂的每个参数的注释。

    public class CustomObject implements ICustomObject {
        protected String name;
    
        @Inject
        public CustomObject(@Assisted String name){
           this.name = name;
        }
    }
    
  4. 将绑定添加到您正在使用的模块中

    public class SomeModule extends AbstractModule {
    
        @Override
        protected void configure() {
             install(new FactoryModuleBuilder()
                .implement(ICustomObject.class, CustomObject.class)
                .build(ICustomObjectFactory.class));
        }
    }
    
  5. 注入工厂并创建对象的实例

    public class SomeClass {
    
        @Inject ICustomObjectFactory factory;
    
        public SomeClass () {
            ICustomObject first = this.factory.create("first");
            ICustomObject second = this.factory.create("second");
        }
    }
    
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)

如何在 Roboguice 中通过构造函数注入参数? [安卓] 的相关文章

  • 将数据从服务传递到活动

    我有自行运行的服务 服务自动启动 我有活动 在此 Activity 按钮中启动该方法DoIt Button setOnClickListener new OnClickListener public void onClick View v
  • 应用程序在加载 xml 布局文件的主线程中做了太多工作

    我正在制作一个 9x9 数独网格 其中 81 个单元格本身就是一个 3x3 网格 单个细胞看起来像这样 1 2 3 4 5 6 7 8 9 每个数字代表该单元格的铅笔注释 我有一个名为 cell layout xml 的文件 表示这种 3x
  • 如何在应用程序关闭时在 Android 通知中显示操作按钮?

    我有一个安卓应用程序 对于通知 我们必须显示一些操作按钮 当应用程序打开时 我们可以自由地构建通知并显示操作按钮 但是当应用程序关闭时 通知会在 Android 的通知托盘中收到 应用程序开发人员无法控制构建用户界面和操作按钮 我们现在如何
  • Android 图表[关闭]

    Closed 此问题正在寻求书籍 工具 软件库等的推荐 不满足堆栈溢出指南 help closed questions 目前不接受答案 我正在开发一个项目 其中有一些图表 图形 刻度图 烛台图和范围图 但问题是 没有该图表的库 我有烛台图的
  • 拖动时跳转 ImageView。 getX() 和 getY() 值正在跳跃

    我创建了一个用于拖动视图的 onTouchListener 如果我使用的话 图像可以顺利拖动getRawX and getRawY 问题是 当您向下放置第二个指针然后抬起第一个指针时 图像将跳转到第二个指针 此 onTouchListene
  • Fragment 问题中的 ExpandableListView

    我正在尝试在片段中实现可扩展列表视图 没有错误出现 当我尝试记录两个的输出时List
  • Android 全屏对话框确认和拒绝操作

    材料设计中的全屏对话框应该在操作栏 工具栏上有确认和拒绝操作 我的问题是 我该怎么做 显示对话框 getFragmentManager beginTransaction add R id container new MyDialogFrag
  • 华为手机“受保护的应用程序”设置及处理方法

    我有一台搭载 Android 5 0 的华为 P8 用于测试应用程序 该应用程序需要在后台运行 因为它跟踪 BLE 区域 我发现华为内置了一个名为 受保护的应用程序 的 功能 可以从手机设置 电池管理器 gt 受保护的应用程序 访问该功能
  • 从ListView中隐藏行而不占用空间

    我有一个带有关联 ArrayAdapter 的 ListView 它在多个活动中显示其内容 不幸的是 现在有必要 我的 ListView 在其中一项设置中不显示其所有元素 而仅显示 属性 未设置为 true 的元素 我想避免使用两个具有不同
  • 将 java 中的 byte[] 转换为 C++ 中的 unsigned char* 的正确方法,反之亦然?

    我是 C 和 JNI 的新手 我尝试找到一种正确的方法 通过使用 JNI 将 java 中的 byte 转换为 C 中的 unsigned char 反之亦然 我正在安卓上工作 在谷歌和SO中寻找解决方案后 我还没有找到将java中的byt
  • 在新的 intel x86 android 模拟器中访问 google api

    我只是尝试在新的 x86 android 模拟器中运行我公司的应用程序 但是我们的应用程序依赖于 google 地图 API 而这在 google 随 android sdk 版本 17 提供的 x86 系统映像中不可用 我的直觉告诉我答案
  • Android蓝牙java.io.IOException:bt套接字已关闭,读取返回:-1

    我正在尝试编写一个代码 仅连接到运行 Android 5 0 KitKat 的设备上的 目前 唯一配对的设备 无论我尝试了多少方法 我仍然会收到此错误 这是我尝试过的最后一个代码 它似乎完成了我看到人们报告为成功的所有事情 有人能指出我做错
  • MIUI 权限被拒绝活动 KeyguardLocked

    当应用程序处于后台且屏幕被锁定时 我无法启动活动 没有异常或警告 只是不调用 onCreate 我一直在与这个问题作斗争 我想我终于找到了它的根源 日志中有一行 D com android server am ExtraActivityMa
  • Android SearchView 在启动时隐藏键盘

    我有一个小问题正在尝试解决 当我打开应用程序时 键盘会显示输入搜索视图的查询 不过 我只想在单击搜索视图时显示键盘 我该如何解决 Thanks 这对我有用 用于隐藏焦点的代码 searchView SearchView view findV
  • 离子初始加载时间

    我正在使用 Ionic 构建一个简单的应用程序 但我的应用程序在冷启动时的初始加载时间方面存在性能问题 这是我所做的 collection repeat 代替带有 track by 的 ng repeat 原生滚动 overflow scr
  • 如何在android中通过蓝牙向配对设备发送短信?

    在我的应用程序中 我想通过蓝牙发送和接收短信 我可以在列表视图中看到配对设备名称和地址的列表 但是当我尝试向配对设备发送文本时 什么也没有发生 在其他设备中没有收到文本 这是我向配对设备发送消息的代码 private void sendDa
  • Android 标记如何实现拖放?

    你好 我正在 Android 中开发 MapView 应用程序 我有三个标记 我希望稍后能够使用 Google Map API getlocation function 为了尝试一下 我想使用拖放功能移动标记 然后检查位置 任何人都可以通过
  • 检查应用程序是否在 Android Market 上可用

    给定 Android 应用程序 ID 包名称 如何以编程方式检查该应用程序是否在 Android Market 上可用 例如 com rovio angrybirds 可用 而 com random app ibuilt 不可用 我计划从
  • LifeCycleAware Fragment 中的片段生命周期事件

    我有一个生命周期感知片段和一个LifecycleObserver class public class MyFragment extends Fragment Override public void onCreate Nullable B
  • 如何访问我的 Android 程序中的联系人

    我正在制作一个短信应用程序 并且想要访问我的 Android 应用程序中的联系人 我想访问联系人 就像他们在实际联系人列表中一样 选择后 我需要返回到我的活动 在其中我可以向该人发送短信 或者是否可以访问存储联系人的数据库 我的代码如下所示

随机推荐

  • 来自:“1 小时前”,至:timedelta + 准确度

    有没有 逆转人性化 时代的功能 例如 给定 字符串 1分钟前 7小时前 5天前 2个月前 可以返回 对伪代码表示歉意 datetime now 时间增量 1 分钟 精度 60 秒 datetime now 时间增量 7 小时 精度 1 小时
  • 解决歧义

    我有一个带有 3 个创建方法重载的控制器 public ActionResult Create public ActionResult Create string Skill int ProductId public ActionResul
  • 如何使用 C++ 将网站设置为 IE、Firefox、Chrome 和 Safari 的主页?

    有没有办法通过 C 或 C 将 google com 这样的网站设置为主页 如何 不确定你的动机是什么 但我不认为这是我希望我的系统上的任何代码从我的手下出发的事情 这听起来像是广告软件 恶意软件会对您的祖父母所做的事情 一旦设置 他们就不
  • 在 localhost 中使用 facebook 登录

    我正在做一个项目 需要使用facebook API作为用户登录 该文档清楚地说明了使用facebook登录的登录按钮的用法 但是 当我在本地主机上测试该按钮时 它没有给我任何信息 没有错误页面 没有弹出窗口 我正在使用 xampp 进行本地
  • 如何指定特定时区的“今天开始”?

    我有一个带有 时间戳与时区 列的表 我想找到时间戳早于今天的所有行 其中 今天 是在特定时区确定的 我知道如何使用at time zone将文字时间戳解释为处于某个特定时区 并且我知道如何使用date trunc以获得这一天的开始 但我不知
  • 如何在 HTML 中调用外部 JavaScript 函数

    我有一小块代码似乎无法工作 我正在构建一个网站并第一次使用 JavaScript 我的 JavaScript 代码位于外部文件 Marq Msg js 中 如下所示 var Messages new Array Messages 0 Thi
  • javascript中的赋值问题[重复]

    这个问题在这里已经有答案了 这是我正在尝试的代码 我唯一的问题是为什么我的代码没有在 projectAreaContextId 中分配 y 的值 编辑1 我已经更正了一些内容 var xhttp new XMLHttpRequest xht
  • Jquery无法在回调函数中访问$(this)

    我正在创建一个插件 但它无法访问 this 我的插件的简单概述是 function fn myPlugin function options callback return this each function this click fun
  • 使用结构时出现编译器错误 C2143

    我正在使用 Visual C 编译一个简单的 c 并使用 Compile as C Code TC 我收到这个编译器错误 错误 C2143 语法错误 缺少 在 输入 之前 在需要简单结构的行上 struct foo test 使用结构体的
  • 如何让 PyC​​harm 更快/更轻? [复制]

    这个问题在这里已经有答案了 我真的很喜欢 PyCharm 的想法并且很想使用它 然而 它会消耗计算机的处理能力和延迟 这是一个很大的缺点 在不久的将来 我将开设一门 Python 入门课程 并建议学生安装 PyCharm 因为它似乎是最友好
  • XSLT: 不起作用

    我的应用程序中有一个 servlet 过滤器 它拦截所有传入的请求 并尝试从传入的 XML 中去除空格 并将生成的 干净 XML 写入响应 我正在使用 XSLT 来实现这一点 请参阅下面的 XSLT
  • 从数据框中删除方括号[重复]

    这个问题在这里已经有答案了 我有以下数据帧格式的 adtaset 我需要从数据中删除方括号 我们该如何进行任何人都可以帮忙吗 From TO wrestle engage in a wrestling match write communi
  • QMap 支持自定义比较器函数吗?

    我找不到设置自定义比较器函数的方法QMap 就像我可以为std map the typename Compare std less lt Key gt 其模板参数的一部分 Does QMap有办法设置吗 没有记录 我认为这是一个错误 htt
  • Boost 测试不 init_unit_test_suite

    我运行这段代码 define BOOST TEST MAIN define BOOST TEST DYN LINK include
  • 一键安装 Ruby/Rails/SQLite?

    我习惯了一键安装本地环境MAMP http www mamp info en index html 是否有 Ruby 等效项 您可以下载并立即获得本地运行的最新版本的 Ruby Rails SQLite 我使用的是运行 Leopard 的
  • Android:选项卡不会用 Holo 主题填充父级?

    下面的代码创建一个包含 4 个选项卡的视图 使用默认主题 androidmanifest xml 中未定义主题 我得到第一个图像 其中选项卡均匀增长以填充可用空间 如果我将主题设置为android theme android style T
  • 非二进制字母表的霍夫曼树?

    对于生成的字母表不是二进制的情况 是否有霍夫曼编码树的简单概括 例如 如果我想通过以三进制写出一些文本来压缩它 我仍然可以为我写出的每个字符建立一个无前缀的编码系统 霍夫曼构造的直接概括 使用 k 叉树而不是二叉树 是否仍能正确有效地工作
  • Sonatype Nexus:如何使用 Amazon S3 作为 Maven 工件的存储?

    我有一个任务来检查如何使我们的内部 Nexus 安装 安装在 CentOs RHEL 上 将工件存储在 Amazon S3 云存储 或任何其他便宜的云存储 中 到目前为止 我只找到了一种解决方案 将 s3 安装为文件系统 例如使用 s3fs
  • 从笔尖实例化视图会引发错误

    我尝试按照此创建 IBDesignable UIView 子类 link http iphonedev tv blog 2014 12 15 create an ibdesignable uiview subclass with code
  • 如何在 Roboguice 中通过构造函数注入参数? [安卓]

    这个问题可能与这个问题完全相同使用 Guice 将参数传递给构造函数 https stackoverflow com questions 9237996 pass parameter to constructor with guice 不同