Android 组件之DialogFragment创建小述

版权声明:转载请声明: https://blog.csdn.net/MingJieZuo/article/details/83151013

一、概述

本节主要简单介绍下DialogFragment的使用,DialogFragment是Fragment的子类,跟其他Fragment一样,DialogFragment实例也是由托管Activity的FragmentManager管理着的,DialogFragment可通过调用show(…)方法被FragmentManager放置到屏幕上,下面我们就来具体的看下

二、DialogFragment创建

其实DialogFragment的用法非常简单,下面我们来简单看个例子,这是我们定义的MyDialogFragment类

    public class MyDialogFragment extends DialogFragment{
        //在这里我们就创建一个简单的AlterDialog,重点不是AlterDialog
        @Override public Dialog onCreateDialog(Bundle savedInstanceState) {
            return new AlertDialog.Builder(getActivity())
                    .setTitle("这是我们定义的AlterDialog")
                    .setPositiveButton(android.R.string.ok, null)
                    .create();
        }
    }

随后在我们的MyActivity4中使用即可

    public class MyActivity4 extends AppCompatActivity{

        @Override protected void onCreate(Bundle savedInstanceState) {
            super.onCreate(savedInstanceState);
            setContentView(R.layout.activity_layout4);
            addClickListener();
        }

        private void addClickListener() {
            findViewById(R.id.tv_show_dialog).setOnClickListener(new View.OnClickListener() {
                @Override
                public void onClick(View view) {
                    //弹出对话框
                    addDialogFragment();
                }
            });
        }

        private void addDialogFragment() {
            //虽然DialogFragment也是一个Fragment,但是在使用上还是有些差别
            FragmentManager fm = getFragmentManager();
            MyDialogFragment dialogFragment = new MyDialogFragment();
            dialogFragment.show(fm, "俺乃String tag");
        }
    }

为什么有AliterDialog了,我们还要多此一举的使用DialogFragment呢,主要原因有两方面,一方面是因为既然DialogFragment是Fragment,所以其也就具备了Fragment的优点,有自己的生命周期管理、易复用、能够通过FragmentManager使用更多配置选项显示对话框;另一方面,当设备发生旋转时,DialogFragment也不会像AlterDialog那样在旋转后消失。

三、总结

本节主要简单的介绍了DialogFragment的使用,如果想要查看更多Fragment的基础知识,去我的博客目录里查看吧,因为关于每块知识点的介绍,博客单节写的比较零散,不容易查找。

猜你喜欢

转载自blog.csdn.net/MingJieZuo/article/details/83151013