Mam różne układy dla tej jednej aktywności.Injectview (Roboguice) nie działa z wieloma układami
Mam różne klasy, które otwierają się i robią swoje rzeczy z układem.
Wstrzykuję te zajęcia do Aktywności przez @Inject. Wszystko to bez problemu.
Ale kiedy próbuję użyć @InjectView na jednym z elementów sterujących, które są w nieaktywnym układzie, pojawia się błąd.
11-02 19: 17: 31,086: błąd/Android Runtime (1326) spowodowane przez: java.lang.NullPointerException: Nie można wprowadzić wartość zerową do klasy be.baes.notes.View.EditNoteImpl .saveButton, gdy pole nie jest @Nullable
To byłby kod.
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);
}
}
Mogę jednak to zrobić.
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);
}
}
Czy jest lepszy sposób to zrobić?
Czy jest jakiś powód, dla którego przycisk @Nullable nie jest dostępny? –
Próbowałem, ale to nie wstrzykuje również przycisku. – chrissie1
Czy używasz RoboGuice 2.0? To * może * działa w 2.0 – emmby