可能是楼主看的书太老了,所以才会有这种问题。但是我相信还有其他的朋友会遇到相同的问题,所以今天我就对Android中在Activity中创建Dialog的方法进行一下简短的讨论。

先看一个大家都很熟悉的方法:

protected void onCreate(Bundle savedInstanceState) {        super.onCreate(savedInstanceState);        setContentView(R.layout.activity_main);        showDialog(0);    }    @Override    protected Dialog onCreateDialog(int id) {        switch (id){            case 0:                return ProgressDialog.show(this, "A progressDialog", "Please wait", true);        }        return null;    }

但是其实这种方式在Android API Level 13就已经@Deprecated了,那么有什么替代方法呢?

Google官方推荐替代方法如下:
使用DialogFragment:

  protected void onCreate(Bundle savedInstanceState) {        super.onCreate(savedInstanceState);        setContentView(R.layout.activity_main);        button = (Button) findViewById(R.id.button);        button.setOnClickListener(new View.OnClickListener() {            @Override            public void onClick(View v) {                showMyDialog();            }            private void showMyDialog() {                myDialog myDialog = new myDialog();                Bundle bundle = new Bundle();                bundle.putString("title", "A progressbar");                bundle.putString("description", "Please wait");                myDialog.setArguments(bundle);//        myDialog.setTargetFragment(this);                myDialog.show(getFragmentManager(), "tag");            }        });    }    class myDialog extends DialogFragment {        @Override        public Dialog onCreateDialog(Bundle savedInstanceState) {            //使用bundle传递一系列dialog需要的参数            Bundle bundle = getArguments();//            setContentView(R.layout.layout_dialog);            return new ProgressDialog.Builder(getActivity())                    .setTitle(bundle.getString("title"))                    .setIcon(R.drawable.ic_launcher)                    .setMessage(bundle.getString("description"))                    //能使用单独的XMl文件对dialog布局//                    .setView(R.layout.layout_dialog)                    .create();        }    }

说白了就是现在Google推荐使用对Dialog操作的API,而不是直接对Dialog本身进行操作,而且还可以借用到Fragment的优势。这种方法通过创建一个继承自DialogFragment的类实现(如上)。

那么如果只是创建一个简单的Yes/No的对话框,这样做是不是有一点“用牛刀杀鸡”的意味呢?那么可以像下面这样做:

protected void onCreate(Bundle savedInstanceState) {        super.onCreate(savedInstanceState);        setContentView(R.layout.activity_main);        button = (Button) findViewById(R.id.button);        button.setOnClickListener(new View.OnClickListener() {            @Override            public void onClick(View v) {                AlertDialog.Builder alertDialog = new ProgressDialog.Builder(MainActivity.this)                        .setTitle("Yes/No")                        .setPositiveButton("OK", new DialogInterface.OnClickListener() {                            @Override                            public void onClick(DialogInterface dialog, int which) {                                dialog.dismiss();                            }                        })                        .setNegativeButton("No", new DialogInterface.OnClickListener() {                            @Override                            public void onClick(DialogInterface dialog, int which) {                                dialog.dismiss();                            }                        })                        .setMessage("This is a YES/NO question.");                alertDialog.show();            }        });

具体可参考楼主看的这一篇帖子

更多相关文章

  1. 麦子学院android老师分享android实现listview异步加载图片的方法
  2. Android 更新UI的两种方法——handler和runOnUiThread(
  3. android 数据库操作初试
  4. android在一个app程序中,打开另一个app的方法
  5. 小米5手机Android运行程序闪退出错解决方法
  6. Android 查看SHA1值的方法

随机推荐

  1. android IO流 写入 读出
  2. android多线程下载详解
  3. Android(安卓)日期工具类DateUtil
  4. Android(安卓)Studio RadioGroup判断点击
  5. android TV盒子开发遥控器按键的监听
  6. IllegalStateException,PatternSyntaxExce
  7. Android简单的计算控件使用
  8. 彻底解决Android中文乱码
  9. Android(安卓)4.0 UI for Tablet and Han
  10. android ViewPager学习笔记1