RoboGuice有什么问题

时间:2013-06-12 09:59:01

标签: android roboguice

我想使用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异常。这有什么问题? 提前谢谢。

2 个答案:

答案 0 :(得分:0)

执行new ChannelManager()时,您没有使用Guice注入,因此注入的字段为空。

要注入ChannelManager,请使用@Inject注释或使用以下代码创建实例:

ChannelManager myChannelManager = RoboGuice.getInjector(this).getInstance(ChannelManager.class);

答案 1 :(得分:0)

还要考虑是否有必要使用'new'运算符来创建e Object。这总是牵涉到一些问题,特别是在(单元)测试中。