我已经发布了另一个问题,但我问另一个问题已经缩小了一些问题。我的问题是我从创建第一个String strTime的行的内部onClick内部获取空指针异常。有人建议这样做的原因是poptest.xml没有正确膨胀。有人能看出为什么会这样吗?
我有这个方法:
@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;
}
}
答案 0 :(得分:2)
如果您的EditText
位于Dialog
:
String strTime = ((EditText) dialog.findViewById(R.id.evnttime)).getText().toString();
String strTitle = ((EditText) dialog.findViewById(R.id.evnttitle)).getText().toString();
String strDet = ((EditText) dialog.findViewById(R.id.evntdet)).getText().toString();
答案 1 :(得分:0)
String strTime = ((EditText) dialog.findViewById(R.id.evnttime)).getText().toString();
String strTitle = ((EditText) dialog.findViewById(R.id.evnttitle)).getText().toString();
String strDet = ((EditText) dialog.findViewById(R.id.evntdet)).getText().toString();
答案 2 :(得分:0)
我的第一个猜测是onClick侦听器中的findViewById正在搜索R.id.evnttime作为buttonsave的子节点。
findViewById方法属于View类,因此可用于每个子类,如Buttons,Layouts ... 它正在搜索您使用它的视图的最后一个子项。
这里可能的解决方案: 在onClick方法之外找到你的视图或使用主视图的findViewById函数(对话框)。