RoboGuice和静态变量注射

时间:2012-12-12 19:51:39

标签: android dependency-injection guice roboguice

我在项目中第一次使用RoboGuice并尝试注入一个静态变量,但变量保持为null。这是我正在测试的一些快速模型:

public class MyActivity extends RoboFragmentActivity {

    @Override protected void onCreate(Bundle savedInstanceState) {
      MyObject.print();
    }
}


@ContextSingleton
public class MyObject {

    @Inject static AssetManager sAssetManager;

    public static void print() {
      if(sAssetManager == null) {
        Log.d("debug", "AssestManager is null");
      } else {
        Log.d("debug", "AssetManager was injected");
      }
  }
}

我该如何做到这一点?

READ

我知道这不是最佳做法 - 在使用RoboGuice方面,这更像是一种学习练习。只有在你回答问题时才回答,而不是“你为什么这样做”。

1 个答案:

答案 0 :(得分:1)

为什么使用static方法/变量?这不是正确的方法。您应该@Inject MyObject进入MyActivity。然后你可以做myObjectInstance.print();。请注意,RoboGuice会在setContentView()之后执行注射,除非你强制它。