我想使用RoboGuice创建一个单例对象,但我得到null异常。我不知道我的代码有什么问题。
@Singleton
public class SessionService {
private static Session session;
public Session getSession() {
if (session == null){
session = new Session();
}
return session;
}
}
-
public class ChannelManager {
@Inject SessionService sessionService;
public String getName(){
return sessionService.getSession().getName();
}
}
public class MainActivity extends RoboActivity{
@InjectView(R.id.button1) Button btn;
@Inject SessionService a;
@Override
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.activity_main);
a.getSession().setName("dsadas");
Log.i("A","NEW: "+ a.getSession().getName());
Log.i("A","NEW NAME: "+ new ChannelManager().getName());
}
我在“new ChannelManager()。getName()”行上得到null异常。这有什么问题? 提前谢谢。
答案 0 :(得分:0)
执行new ChannelManager()
时,您没有使用Guice注入,因此注入的字段为空。
要注入ChannelManager
,请使用@Inject
注释或使用以下代码创建实例:
ChannelManager myChannelManager = RoboGuice.getInjector(this).getInstance(ChannelManager.class);
答案 1 :(得分:0)
还要考虑是否有必要使用'new'运算符来创建e Object。这总是牵涉到一些问题,特别是在(单元)测试中。