在 TextInputLayout 中编辑未命名的 EditText 抛出 FrameLayout cannot be cast to EditText 错误

Editing unnamed EditText inside TextInputLayout throws FrameLayout cannot be cast to EditText error

我用这种方式在 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);

现在,我想更改此 "unnamed" EditText 中的文本(我无法命名它,因为它可能是不同的类型),所以我尝试了 getChildAt

EditText field = (EditText) layo.getChildAt(0);
field.setText(mytext);

它抛出这个错误:

java.lang.ClassCastException: android.widget.FrameLayout cannot be cast to android.widget.EditText

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

您会在 layo 上找到一个 TextInputLayout.getEditText() 方法,

Returns the EditText used for text input.

所以你可以这样做

EditText field = layo.getEditText();
field.setText(mytext);