0

私の Android アプリ プロジェクトでは、RoboGuiceを使用しています。

私のプロジェクトには、シングルトンクラス A があります。

@ContextSingleton
public class A{
   …
   public void method1(){…}
}

次に、A のインスタンスを必要とする別のクラス B があるので、RoboGuice の方法では、通常、クラス B 内で A のインスタンスをインジェクションで宣言します。

public class B {
  @Inject private A a ;

   public void action(){
        a.method1(); // call method1() of class A's instance
   }
}

ときどき、クラス B で宣言された A のインスタンスに対してNullPointerExceptionが発生することがあります。RoboGuice の 1 つの概念を確認したいだけです。

クラス B にカスタム クラス (クラス A など) のインスタンスを注入するには、クラス B を RoboActivity に注入するか、RoboActivity に注入された別のクラス (クラス C など) に注入する必要がありますか?

4

1 に答える 1

0

おそらくどこかで B をインスタンス化し ( new B())、インジェクターを手動で呼び出す必要があります。

RoboGuice がインスタンス B を作成すると、依存関係 A が自動的に注入されますが、自分で B を作成すると、RoboGuice はそれを認識しないため、注入コードを自分で呼び出す必要があります。これは、次のように呼び出すことで実行できます。

RoboInjector injector = RoboGuice.getInjector(context);
injector.injectMembersWithoutViews(yourObjectB);
于 2013-05-06T17:33:35.000 に答える