Vì vậy, tôi có bố trí khác nhau cho Hoạt động này.Injectview (Roboguice) không hoạt động với nhiều bố cục
Và tôi có các lớp khác nhau mà mỗi lớp mở và làm việc với bố cục.
Tôi tiêm các lớp này vào Hoạt động qua @Inject. Tất cả điều này là không có vấn đề.
Nhưng khi tôi cố gắng sử dụng @InjectView trên một trong các điều khiển nằm trong bố cục không hoạt động, tôi gặp lỗi.
11-02 19: 17: 31,086: ERROR/AndroidRuntime (1326): Nguyên nhân: java.lang.NullPointerException: Không thể bơm giá trị null vào lớp be.baes.notes.View.EditNoteImpl .saveButton khi trường không phải là @Nullable
Đây sẽ là mã.
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);
}
}
Tuy nhiên, tôi có thể thực hiện việc này.
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ó cách nào tốt hơn để thực hiện việc này không?
Có lý do gì khiến nút @Nullable không phải là một tùy chọn không? –
Tôi đã thử điều đó, nhưng điều đó cũng không tiêm nút. – chrissie1
Bạn đang sử dụng RoboGuice 2.0? Điều này * có thể * làm việc trong 2.0 – emmby