小男孩‘自慰网亚洲一区二区,亚洲一级在线播放毛片,亚洲中文字幕av每天更新,黄aⅴ永久免费无码,91成人午夜在线精品,色网站免费在线观看,亚洲欧洲wwwww在线观看

分享

關于Android 自定義Dialog按鈕監(jiān)聽和數(shù)據(jù)傳遞到Acitivity的實現(xiàn)

 muyable 2013-12-11

  (1)Android自定義對話框是一種非常實用的控件。與AlertDialog不同的是,自定義Dialog沒有ALertDialog的builder,因此在Button按鈕監(jiān)聽這一塊需要自己定義,這也使自定義Dialog變得比較復雜。常用的是在Dialog中

  (2)Android自定義Dialog運行時往往需要與調(diào)用它的Activity進行數(shù)據(jù)傳遞,比如Dialog中的EditText輸入的數(shù)據(jù)需要回調(diào)到Activity中使用,這個功能在C#中式非常常見的。但Android與C#所不一樣的是。當Dialog運行時,Android是非阻塞的,也就是其下的.show()之下的代碼還是會繼續(xù)運行,而C#則是阻塞的。因此很多習慣C#的朋友在遇到Android的Dialog運行時,也是希望在show()之后直接獲取Dialog中的數(shù)據(jù)。這事實上是行不通的。一種比較可行的方法是在自定義Dialog類時聲明數(shù)據(jù)回調(diào)的接口,然后在Activity中實現(xiàn)接口的方法。

以下是一個簡單的例子,用于解決這兩個問題:

  1. public class InputDialog extends Dialog  
  2. {       private Context context;  
  3.     private EditText editText;  
  4.     private Button button_sure;  
  5.     private Button button_cancel;  
  6.     public OnSureClickListener mListener;  
  7.       
  8.     public InputDialog(Context context)  
  9.     {  
  10.         super(context);  
  11.         this.context = context; }  
  12.     public InputDialog(Context context,OnSureClickListener listener)   
  1. //對InputDialog的構(gòu)造函數(shù)進行重載,添加了OnSureClickListener這個參數(shù)  
  1. {  
  2.     super(context);  
  3.     mListener = listener;  
  4. }  
  5. protected void onCreate(Bundle savedInstanceState)  
  6. {  
  7.     super.onCreate(savedInstanceState);  
  8.     this.setContentView(R.layout.project_edit_dialog);  
  9.     setView();  
  10. }  
  11. private  void setView()  
  12. {  
  13.     button_sure = (Button) findViewById(R.id.button_project_dialog_sure);  
  14.     button_cancel = (Button) findViewById(R.id.button_project_dialog_cancel);  
  15.     editText = (EditText) findViewById(R.id.edit_project_new_name);  
  1. //這里的監(jiān)聽事件,因為該類繼承l(wèi)Dialog類的DialogInterface,而DialogInterface中也有OnClickListener,因此需要用到全名View.OnClickListener  
  2.         button_sure.setOnClickListener(new View.OnClickListener()   
  3.         {  
  4.             public void onClick(View v)  
  5.             {  
  6.                 mListener.getText(editText.getText().toString());  
  7.                 dismiss();  
  8.             }  
  9.         });  
  10.         button_cancel.setOnClickListener(new View.OnClickListener()  
  11.         {  
  12.             public void onClick(View v)  
  13.             {  
  14.                 mListener.getText(editText.getText().toString());//在Button監(jiān)聽事件中實現(xiàn)這一方法  
  15.                 dismiss();  
  16.             }  
  17.         });  
  18.     }  
  19.       
  20.     public interface OnSureClickListener  
  21.     {  
  22.         void getText(String string); //聲明獲取EditText中數(shù)據(jù)的接口  
  23.     }  
  24. }<pre class="java" name="code"> </pre><br>  
  25. <pre></pre>  
  26. <p>以上代碼完成了自定義Dialog類的構(gòu)建。接下來,如果想要在Activity中獲取Dialog中的數(shù)據(jù),只需實例化Dialog即可。</p>  
  27. <pre class="java" name="code">OnClickListener click_new = new OnClickListener()  
  28.     {  
  29.         public void onClick(View v)  
  30.         {  
  31.             OnSureClickListener listener1 = new OnSureClickListener(){  
  32.                 public void getText(String string)  
  33.                 {  
  34.                     inputFile = string;  
  35.                         try  
  36.                         {  
  37.                             addFile();  
  38.                         } catch (IOException e){}  
  39.                 }     
  40.             };  
  41.             InputDialog d1 = new InputDialog(ProjectActivity.this,listener1);  
  42.             d1.show();  
  43.         }  
  44.           
  45.     };</pre>  
  46. <p>在一個普通的Button OnClickListener中,實例化一個OnSureClickListener,Dialog中的EditText值便賦予給了Activity的成員變量inputFile。</p>  
  47. <p>  一</p>  
  48. <p> </p>  
  49. <pre></pre>  

    本站是提供個人知識管理的網(wǎng)絡存儲空間,所有內(nèi)容均由用戶發(fā)布,不代表本站觀點。請注意甄別內(nèi)容中的聯(lián)系方式、誘導購買等信息,謹防詐騙。如發(fā)現(xiàn)有害或侵權(quán)內(nèi)容,請點擊一鍵舉報。
    轉(zhuǎn)藏 分享 獻花(0

    0條評論

    發(fā)表

    請遵守用戶 評論公約

    類似文章 更多