2013-06-12 4 views
0

Я хочу создать одноэлементный объект с помощью RoboGuice, но я получаю null исключение. Я не знаю, что не так с моими кодами.Что не так с RoboGuice

@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());   
    } 

я получаю пустое исключение на "новый ChannelManager() GetName()." Линии. Что в этом плохого? Спасибо заранее.

ответ

0

Когда вы делаете new ChannelManager(), вы не используете инъекцию Guice, поэтому ваши введенные поля равны нулю.

Чтобы придать вашей ChannelManager, либо использовать @Inject аннотацию или использовать следующий код для создания экземпляра:

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

Я получил это, и я сделал это, и это сработало! Спасибо! Я предпочла использовать @Inject. Итак, я объявил его возле SessionService переменной с аннотацией. – nesimtunc

0

считают также, если есть необходимость использовать «новый» оператор для создания электронного объекта. Это всегда связано с некоторыми проблемами, особенно в (единичных) тестах.

 Смежные вопросы

  • Нет связанных вопросов^_^