Warning: file_get_contents(/data/phpspider/zhask/data//catemap/3/android/223.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Android 在TextInputLayout中编辑未命名的EditText会引发FrameLayout无法转换为EditText错误_Android_Android Edittext_Android Textinputlayout - Fatal编程技术网

Android 在TextInputLayout中编辑未命名的EditText会引发FrameLayout无法转换为EditText错误

Android 在TextInputLayout中编辑未命名的EditText会引发FrameLayout无法转换为EditText错误,android,android-edittext,android-textinputlayout,Android,Android Edittext,Android Textinputlayout,我以这种方式在TextInputLayout中制作了一个EditText: public class Field{ private Context context; private TextInputLayout layo; public void build(){ layo=new TextInputLayout(context); layo.setLayoutParams(new LinearLayout.LayoutParams(L

我以这种方式在TextInputLayout中制作了一个EditText:

public class Field{
    private Context context;
    private TextInputLayout layo;

    public void build(){
        layo=new TextInputLayout(context);
        layo.setLayoutParams(new LinearLayout.LayoutParams(LinearLayout.LayoutParams.MATCH_PARENT,LinearLayout.LayoutParams.WRAP_CONTENT));
        container.addView(layo);

        final EditText field = new EditText(context); // Crear objeto
        field.setLayoutParams(new TextInputLayout.LayoutParams(TextInputLayout.LayoutParams.MATCH_PARENT,TextInputLayout.LayoutParams.WRAP_CONTENT));
        layo.addView(field);
现在,我想更改这个未命名的EditText中的文本,我不能命名它,因为它可能是另一种类型,所以我尝试了getChildAt

它抛出以下错误:

java.lang.ClassCastException:android.widget.FrameLayout无法强制转换为android.widget.EditText

我不知道为什么它会在TextInputLayout中找到FrameLayout,知道吗?

你会在Layout上找到一个方法

返回用于文本输入的EditText

所以你可以这么做

EditText field = layo.getEditText();
field.setText(mytext);
TextInputLayout有一个内部结构,它不仅仅由您看到的内容组成。上次我检查时,至少有一个额外的框架布局用于容纳装饰器文本视图,如果有更多,我不会感到惊讶。最重要的是,内部结构偶尔会发生变化,有不同的版本。您可以使用getEditText方法获取TextInputLayout的EditText,而不是使用ViewGroup方法自己查找它。
EditText field = layo.getEditText();
field.setText(mytext);