Android中显示Dialog的方法
来源:互联网 发布:mac 磁盘图标 名称 编辑:程序博客网 时间:2024/06/06 16:54
可能是楼主看的书太老了,所以才会有这种问题。但是我相信还有其他的朋友会遇到相同的问题,所以今天我就对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(); } });
具体可参考楼主看的这一篇帖子
0 0
- Android中显示Dialog的方法
- android 中Dialog对话框及自定义Dialog的方法
- Android中对话框(Dialog)的创建方法
- Android中对话框(Dialog)的创建方法
- android中改变dialog的显示的位置和大小
- android 中自定义Dialog的位置和大小的方法
- android 中自定义Dialog的位置和大小的方法
- android中dialog(自定义dialog)的使用方法!!!
- Android在Service中显示Dialog
- Android在Service中显示Dialog
- Android如何在service中显示Dialog
- android service中显示一个dialog
- Android开发中创建自定义Dialog的方法
- Android中Dialog的常用方法汇总和自定义Dialog的步骤.txt
- Android Dialog 去黑边的方法
- 让dialog消失和显示的方法
- Android自定义Dialog带Dialog的显示消失动画(一)
- Android中强大的Dialog
- android WebView中loadUrl方法显示本地html中的图文
- 关于编码问题的深度解析
- 关于安卓编译环境搭载
- 像掌阅这种保存到手机的图片,是那么保存和读取的?
- 开通csdn博客的第一天
- Android中显示Dialog的方法
- 调用android的Camera 执行结果没有回调onActivityResult()
- Transition-based Parsing 简介
- 利用双缓冲技术解决图像闪烁
- 06原型模式
- ios openssl rsa 加密问题
- libuv 在win10 vs各个版本编译静态库
- ant 打包android工程 的问题
- JSON 取值,麻烦大家帮我看看!