問題があります。私は Android アプリを開発する初心者なので、すべての概念を正しく理解できていないと思います。
問題は次のとおりです。
ダイアログで、すべての情報を入力して「OK」ボタンを押した後、フィールドに入力した内容を取得したいと考えていTextEdit
ます。しかし、それをやり遂げようとすると、インスタンスの代わりに取得しEditText
ました。okButton.onClickListener
findViewById(R.id.myTextEditId)
Null
ここにいくつかのコードがあります:
ダイアログの XML (EditText を定義する部分):
<EditText
android:id="@+id/editText1"
android:layout_width="match_parent"
android:layout_height="wrap_content"
android:layout_marginTop="16dp"
android:layout_marginLeft="4dp"
android:layout_marginRight="4dp"
android:layout_marginBottom="4dp"
android:inputType="textMultiLine"
android:maxLines="3"
android:hint="@string/add_new_note_hint">
<requestFocus />
</EditText>
NPE が発生するコードは次のとおりです。
AlertDialog.Builder dialogBuilder = new AlertDialog.Builder(this);
View dialogView = getLayoutInflater().inflate(R.layout.add_note_dialog,null);
dialogBuilder.setTitle(R.string.add_dialog_title)
.setPositiveButton(R.string.add_dialog_pos_but, new DialogInterface.OnClickListener() {
@Override
public void onClick(DialogInterface dialog, int which) {
EditText et = (EditText) findViewById(R.id.editText1); //this is where I get null instead of real instance.
}
})
なぜ私はこれを取得し、コールバックメソッドでウィジェットのデータを処理する正しい方法 (ベストプラクティス) は何ですか? (直し方)
私の問題に時間を割いていただき、どうもありがとうございました。