Así que tengo diferentes diseños para esta actividad.Injectview (Roboguice) no funciona con varios diseños
Y tengo diferentes clases que cada uno abren y hacen su trabajo con un diseño.
Inyecté estas clases en la Actividad a través de @Inject. Todo esto no tiene problema
Pero cuando intento utilizar @InjectView en uno de los controles que están en el diseño no activo, aparece un error.
11-02 19: 17: 31.086: ERROR/Android Runtime (1326): Causado por: java.lang.NullPointerException: No se puede inyectar valor nulo en clase be.baes.notes.View.EditNoteImpl .saveButton cuando el campo no es @Nullable
Este sería entonces el código.
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);
}
}
Puedo hacer esto.
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);
}
}
¿Hay una mejor manera de hacerlo?
¿Hay alguna razón por la que hacer que el botón @Nullable no sea una opción? –
Lo intenté, pero eso tampoco inyecta el botón. – chrissie1
¿Estás usando RoboGuice 2.0? Esto * puede * funcionar en 2.0 – emmby