Итак, у меня есть разные схемы для этого одного Действия.
И у меня есть разные классы, каждый из которых открывает и выполняет свою работу с макетом.
Я добавляю эти классы в Activity через @Inject. Все это без проблем.
Но когда я пытаюсь использовать @InjectView в одном из элементов управления неактивного макета, я получаю сообщение об ошибке.
11-02 19: 17: 31.086: ОШИБКА / AndroidRuntime (1326): вызвано: java.lang.NullPointerException: не удается ввести нулевое значение в класс be.baes. notes.View.EditNoteImpl.saveButton, когда поле не @Nullable
Тогда это будет код.
public class EditNoteImpl implements EditNote {
@Inject CancelEditNoteClickListener cancelEditNoteClickListener;
@Inject SaveNoteClickListener saveNoteClickListener;
@Inject Provider<Activity> activity;
@InjectView(R.id.saveButton) Button saveButton;
/* (non-Javadoc)
* @see be.baes.notes.EditNote#activateEditNote()
*/
@Override
public void activateEditNote()
{
activity.get().setContentView(R.layout.editnote);
this.saveButton.setOnClickListener(saveNoteClickListener);
}
}
Однако я могу это сделать.
public class EditNoteImpl implements EditNote {
@Inject CancelEditNoteClickListener cancelEditNoteClickListener;
@Inject SaveNoteClickListener saveNoteClickListener;
@Inject Provider<Activity> activity;
private Button saveButton;
/* (non-Javadoc)
* @see be.baes.notes.EditNote#activateEditNote()
*/
@Override
public void activateEditNote()
{
activity.get().setContentView(R.layout.editnote);
saveButton = (Button)activity.get().findViewById(R.id.saveButton);
this.saveButton.setOnClickListener(saveNoteClickListener);
}
}
Есть ли лучший способ сделать это?