Android版本:找不到父视图

Android版本:找不到父视图

问题描述:

我的文件layout.xmlAndroid版本:找不到父视图

<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不能转换为androi d.support.design.widget.TextInputLayout

+0

您是否在下面检查了我的答案,对您有用吗? –

你需要设置ID在TextInputLayout与ID绑定,而不是用的getParent()。

谢谢。

+0

感谢您的帮助 –

一种解决方法是将一个ID设置为这个TextInputLayout:

<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); 

首先,你将有一个ID添加一个设置为您TextInputLayout这样的:

<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。

也许你想尝试TextInputLayout的不同。

,而不是使用:

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

,你可能会想尝试:

XML:

<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> 

代码:

TextInputLayout textInputLayout = (TextInputLayout) findViewById(R.id.testId); 

注意:TextInputLayout下的实际视图层次结构不是 ,保证与用XML编写的视图层次结构匹配。因此,对TextInputLayout的子项(如 TextInputEditText)的getParent()调用 可能不会返回TextInputLayout本身,而是 而不是中间视图。如果您需要直接访问View, 会设置android:id并使用findViewById(int)。

即解决您必须使用findViewById代替getParent问题。

来源是Android official documents