Android获取dialog自定义布局中的控件


最近写了一个自定义布局的Dialog,运行效果如下:

然后我想获取到自定义布局中的EditText控件,并得到其中的字符串,但是使用send_email = (EditText) findViewById(R.id.send_email_dialog_et);并不能获取到控件对象,经测试发现send_email对象为null。。。。

没办法,只好到一个技术群里问一下别人,很幸运我找到了解决方法,关键代码如下:

  1. final View layout = inflater.inflate(R.layout.send_email_dialog,  
  2.                 (ViewGroup) findViewById(R.id.send_email_dialog_ll));  
  3. final EditText sendEmailCon_ET = (EditText) layout.findViewById(R.id.send_email_dialog_et);  
那位提供解决方法的网友说:想要获取自定义布局中的控件必须调用你所定义的View的findViewById方法,而不能像获得其他控件一样直接调用findViewById方法。。。。

最后附上dialog的自定义布局代码:

  1. <?xml version="1.0" encoding="utf-8"?>  
  2. <LinearLayout xmlns:Android="http://schemas.android.com/apk/res/android"  
  3.     android:id="@+id/send_email_dialog_ll"  
  4.     android:orientation="vertical"  
  5.     android:layout_width="match_parent"  
  6.     android:layout_height="match_parent">  
  7.     <TextView  
  8.         android:layout_width="wrap_content"  
  9.         android:textAppearance="?android:attr/textAppearanceMedium"  
  10.         android:layout_height="wrap_content"  
  11.         android:text="To : wuxianglong098@163.com"  
  12.         android:layout_gravity="center"  
  13.         android:layout_marginTop="4dp" />  
  14.     <EditText  
  15.         android:id="@+id/send_email_dialog_et"  
  16.         android:layout_height="wrap_content"  
  17.         android:layout_width="fill_parent"  
  18.         android:inputType="textMultiLine"  
  19.         android:lines="4"  
  20.         android:hint="@string/send_email_hint"  
  21.         android:scrollbarAlwaysDrawVerticalTrack="true"  
  22.         android:layout_marginTop="9dp">  
  23.         <requestFocus></requestFocus>  
  24.     </EditText>  
  25. </LinearLayout>  

THE END!

相关内容