私はこれについて別の質問を投稿しましたが、問題を絞り込んで別の質問をしました。私の問題は、最初のString strTimeが作成された行の内側のonClickの内側からnullポインタ例外が発生していることです。この理由は、poptest.xmlが適切に膨張していないことが示唆されています。なぜこれが起こっているのか誰にも見えますか? Dialog
であるあなたのEditText
場合XMLのインフレーションとEditText
@Override
public void onClick(View v) {
switch (v.getId()) {
case R.id.newappt:
final Dialog dialog = new Dialog(this);
dialog.setContentView(R.layout.poptest);
dialog.setTitle("Create New Appointment");
dialog.setCancelable(true);
Button buttoncancel = (Button) dialog.findViewById(R.id.Button01);
buttoncancel.setOnClickListener(new OnClickListener() {
// on click for cancel button
@Override
public void onClick(View v) {
dialog.dismiss();
}
});
Button buttonsave = (Button) dialog.findViewById(R.id.Button02);
buttonsave.setOnClickListener(new OnClickListener() {
// on click for save button
@Override
public void onClick(View v) {
String strTime = ((EditText) findViewById(R.id.evnttime)).getText().toString();
String strTitle = ((EditText) findViewById(R.id.evnttitle)).getText().toString();
String strDet = ((EditText) findViewById(R.id.evntdet)).getText().toString();
cursor = getAppts();
addAppt(strTime, strTitle, strDet);
showAppts(cursor);
dialog.dismiss();
}
});
dialog.show();
break;
case R.id.delappt:
rmvall();
break;
}
}
'findViewById()'(ビューを指定せずに)はあなたの 'Activity'の一部ですので、あなたが設定したビュー階層を常に見ます。 onCreate()で 'setContentView()'を実行します。 (ダイアログはその階層の一部ではありません) – zapl
あなたは正しいですが、このfindViewById()もandroid.viewパッケージに由来しています。なぜなら、setContentView()ではウィンドウリソースを設定するからです。アクティビティのfindViewById()は、 "return getWindow()。findViewById(id);"で定義されます。 :) – KarlKarlsom