带有gettext和editText的Nullpointer

时间:2014-06-12 17:15:10

标签: android android-edittext alertdialog gettext tostring

我是新手,我整天都在搜索解决它,你能帮助我吗?

我正在尝试使用EditText

设置AlertDialog字符串
 protected void onCreate(Bundle savedInstanceState) {
        super.onCreate(savedInstanceState);
        setContentView(R.layout.activity_add);

        LayoutInflater li = LayoutInflater.from(this);
        View alert = li.inflate(R.layout.alert, null);

        AlertDialog.Builder addUser = new AlertDialog.Builder(this);
        addUser.setView(alert);
        addUser.setTitle("...");
        addUser.setMessage("...");
        addUser.setCancelable(false);
        addUser.setPositiveButton(R.string.btNext, new DialogInterface.OnClickListener() {

    public void onClick(DialogInterface dialog, int id) {
        Final EditText getName = (EditText) findViewById(R.id.inUsName);
        String uName = getName.getText().toString(); //NullPointerException
                acept(v);
            }
        });
        addUser.setNegativeButton(R.string.btCancel, new DialogInterface.OnClickListener() {
            public void onClick(DialogInterface dialog, int id) {
                cancel();
            }
        });
        addUser.show();
    }

}

EditText ID是正确的,我有alert.xml中的所有组件(不是活动默认的xml)。

你发现错了吗?我确定它不是一个优化的或格式良好的代码(它是我的第一个android尝试)。

非常感谢。

4 个答案:

答案 0 :(得分:2)

更改此代码。你必须像碎片一样提供inflater.findviewbyId:

Final EditText getName = (EditText) findViewById(R.id.inUsName);

对此:

final EditText getName = (EditText) li.findViewById(R.id.inUsName);

答案 1 :(得分:1)

检查null值。

final EditText getName = (EditText) dialog.findViewById(R.id.inUsName);
String uName = getName.getText()!=null? getName.getText().toString(): null;

答案 2 :(得分:0)

如果EditText在Layout activity_add上,则必须创建

Final EditText getName;

在活动中添加getname

getname = (EditText) findViewById(R.id.inUsName);

然后将String添加到AlertDialog

String uName = getName.getText().toString();

AlertDialog.Builder alert = new AlertDialog.Builder(this);
alert.setTitle("Title");
alert.setMessage("Message");
// Create TextView
final TextView input = new TextView (this);
String uName = getName.getText().toString();
input.setText(uName);
alert.setView(input);

alert.setPositiveButton("Ok", new DialogInterface.OnClickListener() {
public void onClick(DialogInterface dialog, int whichButton) {
    // Do something with value!
  }
});

  alert.setNegativeButton("Cancel", new DialogInterface.OnClickListener() {
  public void onClick(DialogInterface dialog, int whichButton) {
      // Canceled.
  }
});
alert.show();

答案 3 :(得分:0)

您的Edittext不属于您已夸大的查看提醒 使用

 Final EditText getName = (EditText)alert.findViewById(R.id.inUsName);
 getName.getText().toString();// will not give nullpoint exception 

而不是

 Final EditText getName = (EditText) findViewById(R.id.inUsName);