我的文件 layout.xml
<android.support.design.widget.TextInputLayout
android:layout_width="match_parent"
android:layout_height="wrap_content"
>
<EditText
android:layout_width="match_parent"
android:layout_height="wrap_content"
android:id="@+id/edit_name"
android:hint="@string/name"
/>
</android.support.design.widget.TextInputLayout>
当我尝试让父母参与活动时
EditText edit_name= (EditText) view.findViewById(R.id.edit_name);
TextInputLayout textInputLayout = (TextInputLayout) edit_name.getParent();
我错误:
java.lang.ClassCastException:android.widget.FrameLayout无法强制转换为android.support.design.widget.TextInputLayout
答案 0 :(得分:0)
您需要在TextInputLayout中设置id并使用id绑定,而不是使用getParent()绑定。
感谢。
答案 1 :(得分:0)
解决方法是为此TextInputLayout设置ID:
<android.support.design.widget.TextInputLayout
android:id="@+id/edit_input_layout"
android:layout_width="match_parent"
android:layout_height="wrap_content"
>
<EditText
android:layout_width="match_parent"
android:layout_height="wrap_content"
android:id="@+id/edit_name"
android:hint="@string/name"
/>
</android.support.design.widget.TextInputLayout>
和
EditText edit_name= (EditText) view.findViewById(R.id.edit_name);
TextInputLayout textInputLayout = (TextInputLayout) view.findViewById(R.id.edit_input_layout);
答案 2 :(得分:0)
首先,你必须像这样在TextInputLayout中添加一个ID:
<android.support.design.widget.TextInputLayout
android:id="@+id/text_input_layout"
android:layout_width="match_parent"
android:layout_height="wrap_content"
>
<EditText
android:layout_width="match_parent"
android:layout_height="wrap_content"
android:id="@+id/edit_name"
android:hint="@string/name"
/>
</android.support.design.widget.TextInputLayout>
之后,您可以像获取EditText一样获取TextInputLayout。
答案 3 :(得分:0)
也许你想以不同的方式尝试TextInputLayout textInputLayout = (TextInputLayout) edit_name.getParent();
。
而不是使用:
<android.support.design.widget.TextInputLayout
android:layout_width="match_parent"
android:layout_height="wrap_content"
android:id="testId" >
<EditText
android:layout_width="match_parent"
android:layout_height="wrap_content"
android:id="@+id/edit_name"
android:hint="@string/name"
/>
</android.support.design.widget.TextInputLayout>
您可能想尝试:
XML:
TextInputLayout textInputLayout = (TextInputLayout) findViewById(R.id.testId);
代码:
<div>
答案 4 :(得分:0)
注意:TextInputLayout下的实际视图层次结构是NOT 保证匹配以XML编写的视图层次结构。结果是, 在TextInputLayout的子节点上调用getParent() - 例如 TextInputEditText - 可能不会返回TextInputLayout本身,但是 而是一个中间视图。如果您需要直接访问View, 设置一个android:id并使用findViewById(int)。
即。要解决此问题,您必须使用findViewById
而不是getParent
。