Android:EditText.getText().toString()不起作用

Xan*_*der 0 java android android-edittext android-alertdialog

我使用此代码构建一个带EditText的AlertDialog:

AlertDialog.Builder builder = new AlertDialog.Builder(context);
builder.setTitle("Title");
builder.setView(LayoutInflater.from(context).inflate(R.layout.dialog_view, null));
builder.setNegativeButton("Cancel", null);
builder.setPositiveButton("OK", new DialogInterface.OnClickListener() {
    @Override
    public void onClick(DialogInterface dialog, int which) {
        mInput = ((EditText) LayoutInflater.from(context).inflate(R.layout.dialog_view, null).findViewById(R.id.etxtDialog)).getText().toString();
    }
});
builder.show();
Run Code Online (Sandbox Code Playgroud)

当我运行此代码时,mInput.length()== 0,因此字符串为空.mInput = ((EditText) LayoutInflater.from(context).inflate(R.layout.dialog_view, null).findViewById(R.id.etxtDialog)).getText().toString();虽然执行该行,但EditText确实包含一些字符.为什么这段代码不起作用?

waq*_*lam 7

你做错了......抓住你膨胀的视图的实例,稍后再使用它.例如:

AlertDialog.Builder builder = new AlertDialog.Builder(context);
builder.setTitle("Title");
final View v = LayoutInflater.from(context).inflate(R.layout.dialog_view, null);
builder.setView(v);
builder.setNegativeButton("Cancel", null);
builder.setPositiveButton("OK", new DialogInterface.OnClickListener() {
    @Override
    public void onClick(DialogInterface dialog, int which) {
       mInput = ((EditText)v.findViewById(R.id.etxtDialog)).getText().toString();
    }
});
builder.show();
Run Code Online (Sandbox Code Playgroud)