所以我对这个活动有不同的布局。
而且我有不同的课程,每个课程都打开并使用布局做他们的事情。
我通过@Inject 将这些类注入到Activity 中。这一切都没有问题。
但是,当我尝试在非活动布局中的其中一个控件上使用 @InjectView 时,我得到一个错误。
11-02 19:17:31.086:错误/AndroidRuntime(1326):原因:java.lang.NullPointerException:当字段不是@Nullable 时,无法将空值注入类 be.baes.notes.View.EditNoteImpl.saveButton
这将是代码。
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);
}
}
有没有更好的方法来做到这一点?