Android教程網
  1. 首頁
  2. Android 技術
  3. Android 手機
  4. Android 系統教程
  5. Android 游戲
 Android教程網 >> Android技術 >> 關於Android編程 >> Android學習之DialogFragment

Android學習之DialogFragment

編輯:關於Android編程

DialogFrament是Android sdk中的對話框基類,開發人員可以針對此類進行擴展。他可以擴展出Android中的多種對話框,比如alertdialog,listdialog,radiodialog等。android已經為開發人員提供了簡單的對話框,本篇要講的是對話框的擴展部分。本例是根據sdk開發文檔而來。   1.建立textdialog   在layout文件夾下面,建立textdialog的xml文檔。在xml文檔中,我們只定義了一個textview。     復制代碼  1 <?xml version="1.0" encoding="utf-8"?>  2 <LinearLayout xmlns:android="http://schemas.android.com/apk/res/android"  3     android:layout_width="match_parent"  4     android:layout_height="match_parent"  5     android:orientation="vertical" >  6       7 <TextView  8     android:id="@+id/text"  9     android:layout_width="fill_parent" 10     android:layout_height="wrap_content" /> 11  12 </LinearLayout> 復制代碼 2.建立textdialog類   在src中添加新類TextDialogFragment,該類需要繼承DialogFragment,並需要實現它的一些方法,比如onCreate(),onCreateView()等。在類中主要是為textview設置需要顯示的字段,以及設置dialog顯示的樣式和主題等。這裡是對DialogFragment擴展的主要部分,我們可以再這裡定義自己的方法,定義事件等。不如詩listdialog,需要定義適配器,需要定義itemclick。     復制代碼  1 public class TextDialogFramnet extends DialogFragment {  2       3     int mNum;  4   5     static TextDialogFramnet newInstance(int num)  6     {  7         TextDialogFramnet textdia=new TextDialogFramnet();  8         Bundle bundel=new Bundle();  9         bundel.putInt("name", num); 10         textdia.setArguments(bundel); 11         return textdia; 12     } 13     public void onCreate(Bundle saveInstanced) 14     { 15         super.onCreate(saveInstanced); 16         mNum=getArguments().getInt("name"); 17         int style=DialogFragment.STYLE_NO_TITLE,theme=0; 18         switch((mNum-1)%6) 19         { 20         case 1: 21             style=DialogFragment.STYLE_NO_TITLE; 22             break; 23         case 2: 24             style=DialogFragment.STYLE_NO_FRAME; 25          case 3: 26              style = DialogFragment.STYLE_NO_INPUT;  27              break; 28          case 4:  29              style = DialogFragment.STYLE_NORMAL; 30              break; 31          case 5:  32              style = DialogFragment.STYLE_NORMAL;  33              break; 34          case 6:  35              style = DialogFragment.STYLE_NO_TITLE; 36              break; 37          case 7: 38              style = DialogFragment.STYLE_NO_FRAME; 39              break; 40          case 8:  41              style = DialogFragment.STYLE_NORMAL;  42              break; 43         } 44         switch((mNum-1)%6) 45         { 46         case 4: 47             theme=android.R.style.Theme_Holo; break; 48         case 5: 49             theme=android.R.style.Theme_Holo_Light_Dialog; 50             break; 51          case 6: theme = android.R.style.Theme_Holo_Light; break; 52          case 7: theme = android.R.style.Theme_Holo_Light_Panel; break; 53          case 8: theme = android.R.style.Theme_Holo_Light; break; 54         } 55         setStyle(style,theme); 56     } 57     public View onCreateView(LayoutInflater inflater,ViewGroup contaniner,Bundle savedInstance) 58     { 59         View v=inflater.inflate(R.layout.textdialog, contaniner,false); 60         TextView tv=(TextView)v.findViewById(R.id.text); 61         tv.setText("Dialog#"+mNum+":using style"); 62         return v; 63      64     } 65 } 復制代碼 3.調用textdialog   在我們的activity中調用剛剛定義的對話框,首先需要對話框的實例化,然後根據對話框的需要,調用對話框的方法。最後是調用show()方法,顯示該對話框。     復制代碼  1  void showDialog() {  2         mStackLevel++;  3   4         android.app.FragmentTransaction ft = getFragmentManager().beginTransaction();  5         android.app.Fragment prev = getFragmentManager().findFragmentByTag("dialog");  6         if (prev != null) {  7             ft.remove(prev);  8         }  9         ft.addToBackStack(null); 10  11         // Create and show the dialog. 12         DialogFragment newFragment = TextDialogFramnet.newInstance(mStackLevel); 13         newFragment.show(ft, "dialog"); 14     } 復制代碼  4.alertDialog   alertdialog 是sdk封裝好的一個對話框,我們可以直接調用的。需要注意的是,該類是靜態的,無需實例化,可以直接調用。     復制代碼  1     new AlertDialog.Builder(MainActivity.this).setIcon(R.drawable.ic_launcher)  2                 .setTitle("是否刪除文件").setPositiveButton("確定", new DialogInterface.OnClickListener() {  3                       4                     @Override  5                     public void onClick(DialogInterface dialog, int which) {  6                         // TODO 自動生成的方法存根  7                         new AlertDialog.Builder(MainActivity.this).setMessage("文件已經被刪除").create().show();  8                     }  9                 }) 10                 .setNegativeButton("取消", new DialogInterface.OnClickListener() { 11                      12                     @Override 13                     public void onClick(DialogInterface dialog, int which) { 14                         // TODO 自動生成的方法存根 15                         new AlertDialog.Builder(MainActivity.this).setMessage("您已經選擇取消按鈕,文件未刪除").create().show(); 16                     } 17                 }) 18                 .show(); 復制代碼 該段代碼實現了提示對話框,當我們刪除的時候,可以彈出該對話框,並設置了setpositivebutton和setnegativebutton兩個監聽事件,分別對應確定和取消按鈕。
  1. 上一頁:
  2. 下一頁:
熱門文章
閱讀排行版
Copyright © Android教程網 All Rights Reserved