从MyActivity,请致电:
...
@EBean(scope = EBean.Scope.Singleton)
public class MyClass {
@Bean
MyManager manager;
public static void doStuff(){
manager.show();
// null pointer exception for the manager why ? how to access it ?
}
public static MyClass getInstance() {
if (_instance == null) {
_instance = new MyClass();
}
return _instance;
}
}
...
@EBean(scope = EBean.Scope.Singleton)
public class MyManager {
public void show(){ }
}
Android注释将单例类对象访问到其他类静态方法中。注:AA版本3.3.1
答案 0 :(得分:0)
我担心您错误地使用AA @EBean
。您是否阅读了documentation?
您不必自己编写getInstance()
方法,AA将生成适当的方法,在其中进行注入,并在将bean注入其他组件时自动调用它。你有一个NullPointerException
,因为你用你自己的getInstance()
方法创建了bean,因此没有进行AA注射。但实际上你在doStuff()
中遇到编译错误,因为你正在访问静态方法中的实例字段...所以我假设manager
字段是静态的,对吧?你不应该在单例中使用静态字段/方法,单例的概念只是一个实例存在,所以使用静态字段/方法是多余的,也是令人困惑的。
您可以通过以下方式解决问题:
MyClass
创建MyClass_.getInstance(context)
的实例,然后使用MyClass
注释将@Bean
实例注入另一个组件并从那里使用