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