Android学习之DialogFragment

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

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

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

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

该段代码实现了提示对话框,当我们删除的时候,可以弹出该对话框,并设置了setpositivebutton和setnegativebutton两个监听事件,分别对应确定和取消按钮。

 

你可能感兴趣的:(Android学习)