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币。复制、灌水、广告等回答会被删除,是时候展现真正的技术了!
其他相关推荐
EditText getText()判断输入为空
程序是这样写的 String date_notepad = et_date_notepad.getText().toString(); 起初认为只要判断date_notepad==null就好了,但是结果一直不行 后来知道原因是String不能用==等这样的
EditText getText()方法无效
如果你是设置了一个点击事件 然后在点击事件里面直接使用的gettext()的值, 而你findviewbyid是放在oncreate方法里面的时候它是读不到你的控件的, 所以要把findviewbyid方法放到onclick方法下面就行了
Android edittext.getText()的返回值类型
在开发的时候会遇到将edittext.getText()赋值给String类型出错了 这时加上.toString()就会好用 (1)那么edittext.getText()的返回值类型是什么呢? 它返回的是一个CharSequence 的接口   正好toString()就是CharSequence一个方法 (2)CharSequence和String的区别是什么? C
[android]if(editText.getText()==null || "".equals(editText.getText().toString().trim()))的解释
editText.getText()==null   ----------   判断用户的输入是否为空 "".equals(editText.getText().toString().trim())  ----判断用户有没有输入,trim()--头尾空白被滤掉
TextView和EditText的gettext()方法
TextView的getText()方法,返回类型是CharSequence,如果判断是否为空的话,只要equals.("")或者toString.isEmpty()即可,因为String是CharSequence的实现类,可以直接equals,而且源码中已经为其默认赋值为“”,没有为null的时候。 EditText的getText()方法,返回类型是Editable,如果判断是否为空,不能=
Android EditText getText() 为空
Android EditText getText() 为空
关于Android里EditText控件getText()返回值问题
        在进行Android开发使用EditText控件的时候,会发现直接把EditText的getText()返回值赋给一个String类型的对象会报错,说明EditText的返回值不是一个String类型值,那么getText()的返回值是什么呢?        其实,getText的返回值是一个Charsequence的接口,而toString()是Java.Lang.Object的...
Android-结合trim()方法处理输入信息并且判断是否为空
trim() 经常和toString()方法一起用,作用是取出空格,因为有时候用户输入信息的时候,可能会过多的填写空格,或者有些时候就使用空格做为数据了,为了使我们的数据紧凑并且不会出现空格错误,我们就需要使用到trim()函数。 例如:if (mEditText.getText().toString().trim().isEmpty())首先需要将EditText中的内容转换为String类型
关于EditText中的getText()方法的返回值类型以及string的转换问题
EditText中的getText()方法的返回值为CharSequence,如果我们想要获得string类型数据的话,需要在后边加上.toString     另外,String类型转为int:Integer.parseInt(str); String类型转为float::Float.parseFloat(str);
Android 取不到EditText中值的问题
今天在做一个分页的功能,其中有个页码跳转,是使用一个AlertDialog弹出一个页面布局。当输入页码点确定后,一直取不到EditText中的值,在苦思冥想和膜拜古哥度娘之后,终于解决,现在就和大家分享下: 先来看一段布局文件,文件名是page_goto.xml: <LinearLayout xmlns:android="http://schemas.android.com/apk/res/