Quindi ho diversi layout per questa attività.Injectview (Roboguice) non funziona con più layout
E ho classi diverse che aprono ciascuna e fanno le loro cose con un layout.
Iniettare queste classi nell'attività tramite @Inject. Tutto questo è senza problemi.
Ma quando provo a utilizzare @InjectView su uno dei controlli presenti nel layout non attivo, viene visualizzato un errore.
11-02 19: 17: 31,086: ERROR/AndroidRuntime (1326): causato da: java.lang.NullPointerException: impossibile iniettare valore nullo in classe be.baes.notes.View.EditNoteImpl .saveButton quando campo non è @Nullable
Questo sarebbe quindi il codice.
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);
}
}
Posso comunque farlo.
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);
}
}
C'è un modo migliore per farlo?
C'è un motivo per cui rendere Button @Nullable non è un'opzione? –
L'ho provato, ma non mi ha iniettato il pulsante. – chrissie1
Stai usando RoboGuice 2.0? Questo * può * funzionare in 2.0 – emmby