그래서이 하나의 활동에 다른 레이아웃이 있습니다.여러 레이아웃으로 Injectview (Roboguice)가 작동하지 않습니다.
그리고 나는 각기 다른 레이아웃을 가지고 각각의 클래스를 열고 엽니 다.
@ Inject를 통해 활동에 이러한 클래스를 주입합니다. 이 모든 것은 문제가되지 않습니다.
그러나 비활성 레이아웃에있는 컨트롤 중 하나에서 @InjectView를 사용하려고하면 오류가 발생합니다.
11-02 19 : 17 : 31.086 : ERROR/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);
}
}
더 좋은 방법이 있나요?
Button @ Nullable을 만들 수없는 이유가 있습니까? –
나는 그것을 시도했지만 버튼을 삽입하지는 않는다. – chrissie1
RoboGuice 2.0을 사용하고 있습니까? 이 * * 2.0에서 작동 할 수 있습니다. – emmby