android - 使用 RoboGuice 在我的 Activity 中注入(inject)类

标签 android roboguice

我刚开始使用 roboguice,我很难在我的应用程序中配置注入(inject)。

假设我有如下界面

public interface IAPICall{
         void doSomething();
}

我的界面有两种不同的实现方式

public class MyApiCall implements IAPICall{
   public void doSomething(){
   }
}



 public class MyMockApicall implements IAPICall{
       public void doSomething(){
       }
    }

现在我的要求是我想将界面注入(inject)到我的 Activity 中。我如何配置注入(inject)哪个具体类。在测试期间,我想注入(inject)模拟类,而在生产期间,我想注入(inject)实际类。我该如何配置?

亲切的问候

最佳答案

在你的 guice 配置模块中:

public class GuiceConfigurationModule extends AbstractModule {
...
    @Override
protected void configure() {
        ...
        bind(IAPICall.class).to(MyApiCall.class);
        ...
    }
...
}

在你的 Activity 中:

@Inject
IAPICall someApiCall;

在测试期间使用模拟接口(interface)的最佳方式是创建一个测试模块,其中绑定(bind)指向模型类。有一个关于 Robolectric 的教程 关于如何做到这一点。

http://pivotal.github.com/robolectric/roboguice.html

要将模块添加到应用程序,请在值资源文件夹中添加一个 roboguice.xml 文件:

 <?xml version="1.0" encoding="utf-8"?>
  <resources> 
    <string-array name="roboguice_modules">
        <item>com.stackoverflow.test.GuiceConfigurationModule</item>
    </string-array>
  </resources>

这是在这里描述的:

http://code.google.com/p/roboguice/wiki/UpgradingTo20

关于android - 使用 RoboGuice 在我的 Activity 中注入(inject)类,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/15812792/

相关文章:

java - 使用带有 AbstractThreadedSyncAdapter 的 RoboGuice 上下文注入(inject)

android - 带有标准 Android JUnit 测试用例的 RoboGuice

android - 当我重新启动应用程序时,我的 Sharedpreference 没有保存

java - 如何将 String 转换为从 sqlite 获取的 Uri 并将其设置在 ImageView 中?

java - Android on NFC 读取关闭 Activity (不是主要 Activity )

android - 无法使用 RoboGuice 将 View 注入(inject)自定义类

java - 我应该在哪里放置仅用于开发的类?

android创建对象和内存

java - iCalendar 在 Android 上的实现?

android - 与依赖冲突 'com.google.inject:guice'