Java Android EditText NullPointerException

Java Android EditText NullPointerException,java,android,android-edittext,android-alertdialog,Java,Android,Android Edittext,Android Alertdialog,我需要从我的编辑文本中获取数据,我将其放在对话框中。 当我试图访问它时,我捕获了NullPointerException 这是我的密码: public class MainActivity extends Activity { int imgW ; int imgH ; @Override protected void onCreate(Bundle savedInstanceState) { super.onCreate(savedIns

我需要从我的编辑文本中获取数据,我将其放在对话框中。
当我试图访问它时,我捕获了NullPointerException

这是我的密码:

public class MainActivity extends Activity {

    int imgW  ;
    int imgH  ;

    @Override
    protected void onCreate(Bundle savedInstanceState) {
        super.onCreate(savedInstanceState);
        setContentView(R.layout.activity_main);
    }

    public void OnToolButtonClick(View button)
    {
        switch (button.getId())
        {
        case R.id.btn1:

            final Dialog commentDialog = new Dialog(this);
            commentDialog.setContentView(R.layout.reply);
            Button okBtn = (Button) commentDialog.findViewById(R.id.ok);

            okBtn.setOnClickListener(new View.OnClickListener() {

                @Override
                public void onClick(View v) {

                    final    EditText     w=  (EditText)findViewById(R.id.dialogW);
                    final    EditText     h=  (EditText) findViewById(R.id.dialogH);

                    try {
                        imgW =  Integer.parseInt(w.getText().toString());
                        imgH = Integer.parseInt( h.getText().toString());   

                    }
                    catch (NumberFormatException e) {
                        imgH=0;
                        imgW=0;
                    }

                    Log.i("Size" ,  " w "+ imgW + " h " + imgH);
                    //  drawing_panel_params

                    commentDialog.dismiss();
                }
            });
            Button cancelBtn = (Button) commentDialog.findViewById(R.id.cancel);
            cancelBtn.setOnClickListener(new View.OnClickListener() {

                @Override
                public void onClick(View v) {

                    commentDialog.dismiss();
                }
            });

            commentDialog.show();

            break;
        }
    }
}
}
主布局


对话框的布局



我想知道为什么会发生这种情况..???

您错过了findviewbyId中的commentDialog

public class MainActivity extends Activity {

int imgW  ;
int imgH  ;

@Override
protected void onCreate(Bundle savedInstanceState) {
    super.onCreate(savedInstanceState);
    setContentView(R.layout.activity_main);
}

public void OnToolButtonClick(View button)
{
    switch (button.getId())
    {
    case R.id.btn1:

        final Dialog commentDialog = new Dialog(this);
        commentDialog.setContentView(R.layout.reply);
        Button okBtn = (Button) commentDialog.findViewById(R.id.ok);

        okBtn.setOnClickListener(new View.OnClickListener() {

            @Override
            public void onClick(View v) {

                final    EditText     w=  (EditText)commentDialog.findViewById(R.id.dialogW);
                final    EditText     h=  (EditText) commentDialog.findViewById(R.id.dialogH);

                try {
                    imgW =  Integer.parseInt(w.getText().toString());
                    imgH = Integer.parseInt( h.getText().toString());   

                }
                catch (NumberFormatException e) {
                    imgH=0;
                    imgW=0;
                }

                Log.i("Size" ,  " w "+ imgW + " h " + imgH);
                //  drawing_panel_params

                commentDialog.dismiss();
            }
        });
        Button cancelBtn = (Button) commentDialog.findViewById(R.id.cancel);
        cancelBtn.setOnClickListener(new View.OnClickListener() {

            @Override
            public void onClick(View v) {

                commentDialog.dismiss();
            }
        });

        commentDialog.show();

        break;
    }
 }

}

查看您的代码,我相信它不会找到视图,因为您没有将findViewById()用于为对话框设置的视图

即改变

commentDialog.setContentView(R.layout.reply);

然后改变

final EditText w = (EditText) findViewById(R.id.dialogW);
final EditText h = (EditText) findViewById(R.id.dialogH);

试一试,看看你是否不再收到NullPointerException。

更改

 final EditText w= (EditText)findViewById(R.id.dialogW);
 final EditText h= (EditText)findViewById(R.id.dialogH);


您的
对话框w
对话框h
位于
reply
布局中,该布局在
commentDialog
中膨胀。您需要使用
视图
,在该视图中,您可以将
编辑文本
所在的布局充气

请在此处发布代码时也发布错误消息。。。请确保格式正确。。。。如果您不想手动执行此操作,请让您的eclipse执行此操作。。。选择整个代码并按“CTRL+I”,然后在此处发布。。。
final EditText w = (EditText) view.findViewById(R.id.dialogW);
final EditText h = (EditText) view.findViewById(R.id.dialogH);
 final EditText w= (EditText)findViewById(R.id.dialogW);
 final EditText h= (EditText)findViewById(R.id.dialogH);
 final EditText w= (EditText)commentDialog.findViewById(R.id.dialogW);
 final EditText h= (EditText)commentDialog.findViewById(R.id.dialogH);