gpt4 book ai didi

android - TextInputLayout 内的 AppCompatEditText.getpParent() 返回 FrameLayout

转载 作者:塔克拉玛干 更新时间:2023-11-01 21:34:18 26 4
gpt4 key购买 nike

我正在创建简单的 AppCompatEditText 添加 OnFocusChangeListener 并将其放在简单的 TextInputLayout 中。

当 AppCompatEditText 失去焦点时,它的内容应该通过 isValidParam 方法进行验证。

它一直工作到昨天,当时我使用了 rev.23.0.3但是现在,当我使用 rev.24.0.2 时,它会在 isValidParam 方法的第一行给出如下错误。

java.lang.ClassCastException: android.widget.FrameLayout cannot be cast to android.support.design.widget.TextInputLayout

我在 Debug模式下检查过。 AppCompatEditText.getpParent() 实际上返回 Framelayout 而不是 TextInputLayout。

LinearLayout llParams = new LinearLayout(context);
llParams.setOrientation(LinearLayout.VERTICAL);

// Create label for param
final TextInputLayout tilParam = new TextInputLayout(context);
// Add label into layout
llParams.addView(tilParam);


// Create Editor for param
final AppCompatEditText etParam = new AppCompatEditText(context);

edParam.setOnFocusChangeListener(new View.OnFocusChangeListener() {
@Override
public void onFocusChange(View v, boolean hasFocus) {
if (!hasFocus)
if (isValidParam(etParam)) {
do some thing;
} else {
do other thing;
}
}
});

tilParam.addView(etParam);


// validation method
boolean isValidParam(AppCompatEditText editText) {
TextInputLayout til = (TextInputLayout) editText.getParent();

String text = editText.getText().toString().trim();

if (!text.equls("some criteria") {
till.setError("Error text")
return false;
}

return true;
}

最佳答案

更新:
在 TextInputLayout 中使用小部件 TextInputEditText 而不是 EditText

旧答案

TextInputLayout textInputLayout = (TextInputLayout) editText.getParent().getParent();

这似乎是一种快速修复。远非理想。

关于android - TextInputLayout 内的 AppCompatEditText.getpParent() 返回 FrameLayout,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/39164321/

26 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com