Android獲取dialog自定義佈局中的控制元件

yangxi_001發表於2014-07-16

最近寫了一個自定義佈局的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!

相關文章