这可能是我的问题之一。
基本上我正在为 1.1.2 版的实际注入而苦苦挣扎。我已经阅读了该网站上的几页,我觉得我错过了一些东西。
基本上我已经完成了 RoboApplication 扩展。我已经覆盖了 addApplicationModules 方法。我什至做了一个模块。
我的模块如下所示:
public class DataRepository extends AbstractAndroidModule
{
@Override
protected void configure() {
/*
* This tells Guice that whenever it sees a dependency on a TransactionLog,
* it should satisfy the dependency using a DatabaseTransactionLog.
*/
bind(IDataBaseAdapter.class).to(DataBaseAdapter.class);
}
}
在我的适配器中,我有这个:
public class DataBaseAdapter implements IDataBaseAdapter
{
private DataBaseHelper _dbHelper;
private SQLiteDatabase _db;
@Inject
protected static Provider<Context> contextProvider;
public DataBaseAdapter()
{
_dbHelper = new DataBaseHelper(contextProvider.get());
}
}
如果我不在那里,那么代码块的合适位置在哪里......我在哪里关联注入器?
最后......我的应用程序有这样的注入:
public class MyApplication extends RoboApplication
{
public MyApplication()
{
super();
}
public MyApplication(Context context)
{
super();
attachBaseContext(context);
}
@Override
protected void addApplicationModules(List<Module> modules)
{
modules.add(new DataRepository());
}
@Inject
private IDataBaseAdapter adapter;
public IDataBaseAdapter getAdapter()
{
return adapter;
}
public void setAdapter(IDataBaseAdapter value)
{
adapter = value;
}
...
}
我正在尝试使用如图所示的 Inject 属性。例如:
@Inject
private IDataProvider provider;
我迷路的几个原因是我来自 .NET 和 Flash/ActionScript 背景,而且我只使用了 StructureMap 而不是 Ninject(在 .NET 世界中),我听说 Guice 是用一些设计的Ninject 的想法。有人可以帮我弄清楚这个小块吗?
我真的很想专注于使用 1.1.2 而不是跳到 RoboGuice 的 2.x ......特别是因为它仍处于测试阶段,所以我希望大家不要介意。
再次感谢,凯利