在Android应用程序中使用Roboguice注入对象的问题

时间:2014-08-26 05:01:13

标签: java android roboguice

我在使用roboguice将模块注入我的课程时遇到了问题。我将 roboguice_modules.xml 添加到 src / main / res / values

<?xml version="1.0" encoding="utf-8"?>
<resources>
   <string-array name="roboguice_modules">
     <item>com.androidclient.guice.BindingModule</item>
   </string-array>
</resources>

我的 BindingModule 看起来像这样

public class BindingModule extends AbstractModule {
    @Override
    protected void configure() {
        bind(FooIf.class).to(FooImpl.class);
    }
}

这就是我将 FooImpl 注入我的课程

的方法
@Inject  
FooIf foo;

我在这里做错了什么?

1 个答案:

答案 0 :(得分:0)

您的MainActivity必须扩展RoboFragmentActivity而不是FragmentActivity。所有类然后使用注入必须扩展一些类的Roboguice库,因为有时会发生魔术,即:RoboFragment,RoboActivity,RoboAsyncTask,RoboBroadcastReceiver等。注入发生在onCreate方法上的setContentView方法之后,在那个调用方法之后,你的变量被注射。

您可以使用此代码:

public class MainActivity extends RoboFragmentActivity 
{
    @Inject  
    FooIf foo;

    @Override
    public void onCreate(Bundle savedInstanceState) {   
        super.onCreate(savedInstanceState);

        //Here you can use foo variable
    }
 }