我创建了一个AlertDialog
,当您按下Button
时,会弹出Dialog
,layout
会显示EditText
。但是,我在实际代码中而不是在layout
文件中创建了xml
。出于某种原因,当AlertDialog
弹出时,它无法找到EditText
字段并给我NullPointerException
。
//private Lecture lecture;
private LectureManager lectureManager;
public void addWork(View view) {
LinearLayout layout = new LinearLayout(this);
EditText weight = new EditText(this);
EditText mark = new EditText(this);
mark.setInputType(InputType.TYPE_CLASS_NUMBER);
weight.setInputType(InputType.TYPE_CLASS_NUMBER);
weight.setId(99);
mark.setId(100);
layout.addView(mark);
layout.addView(weight);
AlertDialog.Builder addwork = new AlertDialog.Builder(this);
addwork.setView(layout);
addwork.setPositiveButton("Add", new DialogInterface.OnClickListener() {
@Override
public void onClick(DialogInterface dialog, int which) {
EditText eweight = (EditText) findViewById(99);
EditText emark = (EditText) findViewById(100);
String coursename = ecoursename.getText().toString();
出于某种原因,我在“NullPointerException
重量”行获得EditText
。我相信也许它找不到任何ID为99且EditText
可能超出范围的东西?提前谢谢!
答案 0 :(得分:1)
实际上,当你拨打这些电话时:
EditText eweight = (EditText) findViewById(99);
EditText emark = (EditText) findViewById(100);
您正在调用活动的findViewById()
方法,而不是AlertDialog
。要从Dialog
检索视图,您可以在onClick()
内使用类似的内容:
EditText eweight = (EditText) ((AlertDialog)dialog).findViewById(99);
EditText emark = (EditText) ((AlertDialog)dialog).findViewById(100);
希望这有帮助。
答案 1 :(得分:0)
试试这个..
final
同时启用EditText
,如下所示
final EditText weight = new EditText(this);
final EditText mark = new EditText(this);
然后您可以在 PositiveButton
中获取EditText
中的文字
String weight_txt = weight.getText().toString().trim();
String mark_txt = mark.getText().toString().trim();
无需为EditText
设置ID也不需要findViewById
。
答案 2 :(得分:0)
我认为你需要这样做
EditText eweight = (EditText) view.findViewById(99);
并查看您在addWork()方法参数中传递的内容。