2 csh 34 csh_34 于 2013.05.16 09:38 提问

Android: EditText.getText().toString()不能运行

我使用下面的代码用一个 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();

当我运行这段代码时,出现mInput.length() == 0, 所以字符串是空的。
代码行mInput = ((EditText) LayoutInflater.from(context).inflate(R.layout.dialog_view, null).findViewById(R.id.etxtDialog)).getText().toString();虽然执行了,但是EditText 不包含任何字符。为什么这段代码没有运行出结果呢?

1个回答

luhuajcdd
luhuajcdd   2013.05.16 10:45

LayoutInflater.from(context).inflate(R.layout.dialog_view, null) 这样会得到一个新的view, 不是你想要的那个(之前inflate 出来的那个)。
解决办法是:

View  view = builder.setView(LayoutInflater.from(context).inflate(R.layout.dialog_view, null));
final  EditText et = (EditText) view.findViewById(R.id.etxtDialog))
builder.setView(view);
builder.setPositiveButton("OK", new DialogInterface.OnClickListener() {
    @Override
    public void onClick(DialogInterface dialog, int which) {
        mInput = et.getText().toString();
    }
});
Csdn user default icon
上传中...
上传图片
插入图片
准确详细的回答,更有利于被提问者采纳,从而获得C币。复制、灌水、广告等回答会被删除,是时候展现真正的技术了!