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);