したがって、この1つのアクティビティにはさまざまなレイアウトがあります。
そして、私はそれぞれが開いてレイアウトでそれぞれのことを行うさまざまなクラスを持っています。
これらのクラスを@Injectを介してアクティビティに注入します。これはすべて問題ありません。
しかし、アクティブでないレイアウトにあるコントロールの1つで@InjectViewを使用しようとすると、エラーが発生します。
11-02 19:17:31.086:エラー/ AndroidRuntime(1326):原因:java.lang.NullPointerException:フィールドが@Nullableでない場合、クラスbe.baes.notes.View.EditNoteImpl.saveButtonにnull値を挿入できません
これがコードになります。
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);
}
}
これを行うためのより良い方法はありますか?