Это, вероятно, первая часть моего вопроса.
В основном я борюсь с фактической инъекцией для версии 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 вместо перехода на 2.x RoboGuice ... тем более, что он все еще в бета-версии, поэтому я надеюсь, что вы все не против.
Еще раз спасибо,
Келли