问题描述
- 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 不包含任何字符。为什么这段代码没有运行出结果呢?
解决方案
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();
}
});
时间: 2024-11-03 23:09:48