在警告对话框范围之外的Edittext字段?空指针异常

时间:2014-04-15 04:13:09

标签: java android nullpointerexception alertdialog

我创建了一个AlertDialog,当您按下Button时,会弹出Dialoglayout会显示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可能超出范围的东西?提前谢谢!

3 个答案:

答案 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()方法参数中传递的内容。