それはおそらく私の質問の一部です。
基本的に、バージョン 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 のバックグラウンドを持っていることと、(.NET の世界では) Ninject の代わりに StructureMap しか使用していないことです。 Ninjectのアイデアを念頭に置いています。誰かがこの小さなピースを理解するのを手伝ってくれませんか?
RoboGuice の 2.x にジャンプするのではなく、1.1.2 を使用することに集中したいと思います...特にまだベータ版であるため、気にしないでください。
ありがとう、ケリー