【发布时间】:2011-11-02 18:39:23
【问题描述】:
所以我对这个 Activity 有不同的布局。
我有不同的课程,每个课程都打开并使用布局做他们的事情。
我通过@Inject 在 Activity 中注入这些类。这一切都没有问题。
但是,当我尝试在非活动布局中的其中一个控件上使用 @InjectView 时,我得到一个错误。
11-02 19:17:31.086:错误/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);
}
}
有更好的方法吗?
【问题讨论】:
-
是否有理由使按钮@Nullable 不是一个选项?
-
我试过了,但也没有注入按钮。
-
您使用的是 RoboGuice 2.0 吗?这可能适用于 2.0
-
我使用的是 1.2,因为那是稳定版本。我会尝试 2.0。
-
RoboGuice 2.0 支持@Nullable。看到这个问题stackoverflow.com/questions/15200701/…