こんにちは、私はバックグラウンドで C#/.NET を使用しており、Android を少し操作することを学びました。今は、楽しみのために小さなアプリを作成し始めており、IoC フレームワークを学ぶのに苦労しました。少しググった後、roboguice を見つけました。 .しかし、それを統合する方法がわかりません.On .
NET Ninject と Unity を使用しており、これらのフレームワークから取得した同様の形式のコンストラクター インジェクションを作成しようとしています。
ここに私がこれまでに持っているものと、私が考え出したと思うものがあります:
このクラスはアプリのブートストラップを表し、依存関係の構成クラスを登録する場所は次のとおりです。
public class IOCApplication extends Application{
@Override
public void onCreate(){
super.onCreate();
RoboGuice.setBaseApplicationInjector(this, RoboGuice.DEFAULT_STAGE, RoboGuice.newDefaultRoboModule(this), new IOCModule());
}
}
これは Dependency 構成クラスです。
public class IOCModule implements Module{
@Override
public void configure(com.google.inject.Binder binder) {
binder.bind(ITest.class).to(Test.class);
}
}
私の AndroidManifest では、これを追加しました:
<application ... android:name="com.example.project2.IOCApplication">
この部分を追加しなければならなかった理由はよくわかりませんが、IOCApplication を最初にインスタンス化する必要があることを Android に伝えるためのものだと考えています。
これは私の MainActivily クラスのクラスで、コンストラクターを追加しました。
public ITest test;
public MainActivity(ITest test){
this.test = test;
}
Android デバイスでこれを実行しようとすると、アプリが無限ループに入っているように見え、ITest がインスタンス化されたとは思えません。
私は何を間違っていますか?