安卓基础(十七)

来源:互联网 发布:南风知我意全集百度云 编辑:程序博客网 时间:2024/05/08 00:37

对话框

  • 对话框
    • 简介
    • 正文
    • 扩展阅读

目标人群:没有基础的安卓初学者
知识点:DialogFragment的创建与调用
目标:在页面中显示一个含有两个按钮的对话框

简介

  • 对话框的介绍已导入准备

  • DialogFragment类的简单调用

正文

1.对话框是出现在用户眼前的一个小小的窗口,用于让用户即时的做出一些操作。在3.0之后的安卓版本中,统一建议使用DialogFragment来实现,对于低版本的安卓系统来说,首先我们需要在build.gradle中添加对support V4包的引用,代码如下:

dependencies {    ...    compile 'com.android.support:support-v4:21.0.3'    ...}
  • 也可以在项目中选择Open Module Settings-Dependencies-点击右侧加号-Library Dependency-选中appcompat-V4来进行添加

  • 如果为高于3.0之后的安卓版本,则不需要考虑此处

  • 以下示例为support-v4版本

2.创建一个FragmentActivity页面,命名为MainActivity,创建两个方法来对应对话框按钮的点击事件:

    public void doPositiveClick() {        Log.i("FragmentAlertDialog", "Positive click!");    }    public void doNegativeClick() {        Log.i("FragmentAlertDialog", "Negative click!");    }

3.创建一个DialogFragment页面,命名为MyAlertDialogFragment,并实现它的onCreateDialog方法,代码如下:

import android.app.AlertDialog;import android.app.Dialog;import android.content.DialogInterface;import android.os.Bundle;import android.support.v4.app.DialogFragment;public class MyAlertDialogFragment extends DialogFragment {    public static MyAlertDialogFragment newInstance(String title) {        //创建一个新的对话框,并得到从调用页面传来的Title值        MyAlertDialogFragment frag = new MyAlertDialogFragment();        Bundle args = new Bundle();        args.putString("title", title);        frag.setArguments(args);        return frag;    }    @Override    public Dialog onCreateDialog(Bundle savedInstanceState) {        /** 得到Title值,并创建一个对话框,该对话框包含两个按钮           当两个按钮被点击时,分别调用了MainActivity页面的doPositiveClick和doNegativeClick方法 **/        String title = getArguments().getString("title");        return new AlertDialog.Builder(getActivity())                .setIcon(R.drawable.ic_launcher)                .setTitle(title)                .setPositiveButton("确定",                        new DialogInterface.OnClickListener() {                            public void onClick(DialogInterface dialog, int whichButton) {                                ((MainActivity) getActivity()).doPositiveClick();                            }                        }                )                .setNegativeButton("取消",                        new DialogInterface.OnClickListener() {                            public void onClick(DialogInterface dialog, int whichButton) {                                ((MainActivity) getActivity()).doNegativeClick();                            }                        }                )                .create();    }}

4.回到MainActivity中,使用代码来调用该DialogFragment,代码如下:

   @Override    protected void onCreate(Bundle savedInstanceState) {        super.onCreate(savedInstanceState);        setContentView(R.layout.activity_main);        showDialog();    }    public void showDialog() {        DialogFragment newFragment = MyAlertDialogFragment.newInstance("两个按钮的对话框");        newFragment.show(getSupportFragmentManager(), "alert");    }
  • 当然也可以将该Fragment作为视图结构中的一员,以此来调用该DialogFragment
FragmentTransaction ft = getFragmentManager().beginTransaction();DialogFragment newFragment = MyDialogFragment.newInstance();ft.add(R.id.embedded, newFragment);ft.commit();

扩展阅读

  1. DialogFragment的官方API
  2. Dialogs的官方API
0 0
原创粉丝点击