Android dialog应用经验总结
创始人
2024-06-22 03:21:25
0

Android手机操作系统是一款由谷歌推出的开源操作系统。在智能手机领域中,这一操作系统占据着非常重要的地位。在这里我就先来了解一下Android dialog的实现方法。希望可以给大家带来一些帮助。#t#

1、网上说的很多,Android dialog实现的方法有两个

一个是通过AlertDialog.Builder 初始化dialog 然后再showDialog

另一个是通过将androidManifest.xml中的activity的属性设为android:theme="@android:style/Theme.Dialog,伪装为dialog

2、showDialog的线程问题

Android dialog的显示不会阻塞ui线程.....

例子

Java代码

  1. protected void onListItemClick(ListView l, View v, 
    int position, long id) {   
  2. Intent intent = new Intent();   
  3. Bundle bundle = new Bundle();   
  4. switch (editMode) {   
  5. case SELECT:   
  6. bundle.putString("listName", list.get
    (position).getName());   
  7. intent.setClass(this, AudioPlayer.class);   
  8. intent.putExtras(bundle);   
  9. startActivity(intent);   
  10. break;   
  11. case RENAME:   
  12. oldName = list.get(position).getName();   
  13. intent.setClass(MusicList.this, DialogActivity.class);   
  14. startActivityForResult(intent, Preferences.RENAME);   
  15. break;   
  16. case DELETE:   
  17. oldName = list.get(position).getName();   
  18. showDialog(CONFIRM_DIALOG);   
  19. delete(oldName,flag);   
  20. break;   
  21. }   
  22. editMode = EditMode.SELECT;   
  23. protected Dialog onCreateDialog(int id) {   
  24. switch (id) {   
  25. case CONFIRM_DIALOG:   
  26. return new AlertDialog.Builder(MusicList.this).setIcon(   
  27. android.R.drawable.ic_dialog_alert).setTitle("确认删除?")   
  28. .setPositiveButton(R.string.confirm,   
  29. new DialogInterface.OnClickListener() {   
  30. public void onClick(DialogInterface dialog,   
  31. int whichButton) {   
  32. mListTool.deleteList(oldName);   
  33. flag = true;   
  34. }   
  35. }).setNegativeButton(R.string.cancel,   
  36. new DialogInterface.OnClickListener() {   
  37. public void onClick(DialogInterface dialog,   
  38. int whichButton) {   
  39. flag = false;   
  40. }   
  41. }).create();   
  42. }   
  43. return null;   
  44. } }   
  45. protected void onListItemClick(ListView l, View v, 
    int position, long id) {  
  46. Intent intent = new Intent();  
  47. Bundle bundle = new Bundle();  
  48. switch (editMode) {  
  49. case SELECT:  
  50. bundle.putString("listName", list.get(position).getName());  
  51. intent.setClass(this, AudioPlayer.class);  
  52. intent.putExtras(bundle);  
  53. startActivity(intent);  
  54. break;  
  55. case RENAME:  
  56. oldName = list.get(position).getName();  
  57. intent.setClass(MusicList.this, DialogActivity.class);  
  58. startActivityForResult(intent, Preferences.RENAME);  
  59. break;  
  60. case DELETE:  
  61. oldName = list.get(position).getName();  
  62. showDialog(CONFIRM_DIALOG);  
  63. delete(oldName,flag);  
  64. break;  
  65. }  
  66. editMode = EditMode.SELECT;  
  67. protected Dialog onCreateDialog(int id) {  
  68. switch (id) {  
  69. case CONFIRM_DIALOG:  
  70. return new AlertDialog.Builder(MusicList.this).setIcon(  
  71. android.R.drawable.ic_dialog_alert).setTitle("确认删除?")  
  72. .setPositiveButton(R.string.confirm,  
  73. new DialogInterface.OnClickListener() {  
  74. public void onClick(DialogInterface dialog,  
  75. int whichButton) {  
  76. mListTool.deleteList(oldName);  
  77. flag = true;  
  78. }  
  79. }).setNegativeButton(R.string.cancel,  
  80. new DialogInterface.OnClickListener() {  
  81. public void onClick(DialogInterface dialog,  
  82. int whichButton) {  
  83. flag = false;  
  84. }  
  85. }).create();  
  86.  
  87. }  
  88. return null;  
  89. } } 

Android dialog的对话框还在初始化得过程中,delete方法就调用了,说明dialog是另开一个线程的,同时提供回调方法

3、取得dialog中Edittext的内容问题

由于Android dialog本身没有提供取得Edittext内容的回调函数,所以需要自己写.....

简单的方法是使用activity伪装dialog,有布局更自由,消息传递更方便地优点

相关内容

热门资讯

如何允许远程连接到MySQL数... [[277004]]【51CTO.com快译】默认情况下,MySQL服务器仅侦听来自localhos...
如何利用交换机和端口设置来管理... 在网络管理中,总是有些人让管理员头疼。下面我们就将介绍一下一个网管员利用交换机以及端口设置等来进行D...
施耐德电气数据中心整体解决方案... 近日,全球能效管理专家施耐德电气正式启动大型体验活动“能效中国行——2012卡车巡展”,作为该活动的...
Windows恶意软件20年“... 在Windows的早期年代,病毒游走于系统之间,偶尔删除文件(但被删除的文件几乎都是可恢复的),并弹...
20个非常棒的扁平设计免费资源 Apple设备的平面图标PSD免费平板UI 平板UI套件24平图标Freen平板UI套件PSD径向平...
德国电信门户网站可实时显示全球... 德国电信周三推出一个门户网站,直观地实时提供其安装在全球各地的传感器网络检测到的网络攻击状况。该网站...
着眼MAC地址,解救无法享受D... 在安装了DHCP服务器的局域网环境中,每一台工作站在上网之前,都要先从DHCP服务器那里享受到地址动...
为啥国人偏爱 Mybatis,... 关于 SQL 和 ORM 的争论,永远都不会终止,我也一直在思考这个问题。昨天又跟群里的小伙伴进行...