当前位置: 首页 > news >正文

视频门户网站建设项目标书在线阅读小说网站开发

视频门户网站建设项目标书,在线阅读小说网站开发,中装建设(002822)股吧,深圳福田网站建设公司对话框 对话框(Dialog)是一种常用的 UI 组件,它主要用于显示信息、接收用户操作反馈 对话框可以包含各种元素,但是主要还是以文本、按钮为主,其次是列表 其中,基础对话框是 Android 中最简单的对话框&…

对话框

  1. 对话框(Dialog)是一种常用的 UI 组件,它主要用于显示信息、接收用户操作反馈

  2. 对话框可以包含各种元素,但是主要还是以文本、按钮为主,其次是列表

  3. 其中,基础对话框是 Android 中最简单的对话框,而后是进度对话框、自定义对话框等


一、UI 线程问题

1、非 UI 线程中创建对话框
  • 非 UI 线程中创建对话框会抛出异常
try {AlertDialog.Builder builder = new AlertDialog.Builder(this);builder.setTitle("普通对话框");builder.setMessage("确定退出吗?");builder.setPositiveButton("确定", (dialog, which) -> {Toast.makeText(this, "点击了确定", Toast.LENGTH_SHORT).show();});builder.setNegativeButton("取消", (dialog, which) -> {Toast.makeText(this, "点击了取消", Toast.LENGTH_SHORT).show();});AlertDialog alertDialog = builder.create();alertDialog.show();
} catch (Exception e) {e.printStackTrace();
}
  • 输出结果
java.lang.RuntimeException: Can't create handler inside thread Thread[Thread-2,5,main] that has not called Looper.prepare()
2、非 UI 线程中显示对话框
  • 非 UI 线程中显示对话框会抛出异常
AlertDialog.Builder builder = new AlertDialog.Builder(this);builder.setTitle("普通对话框");
builder.setMessage("确定退出吗?");
builder.setPositiveButton("确定", (dialog, which) -> {Toast.makeText(this, "点击了确定", Toast.LENGTH_SHORT).show();
});
builder.setNegativeButton("取消", (dialog, which) -> {Toast.makeText(this, "点击了取消", Toast.LENGTH_SHORT).show();
});AlertDialog alertDialog = builder.create();new Thread(() -> {try {alertDialog.show();} catch (Exception e) {e.printStackTrace();}
}).start();
  • 输出结果
java.lang.RuntimeException: Can't create handler inside thread Thread[Thread-2,5,main] that has not called Looper.prepare()
3、非 UI 线程中关闭对话框
  • 非 UI 线程中关闭对话框不会抛出异常
AlertDialog.Builder builder = new AlertDialog.Builder(this);builder.setTitle("普通对话框");
builder.setMessage("确定退出吗?");
builder.setPositiveButton("确定", (dialog, which) -> {Toast.makeText(this, "点击了确定", Toast.LENGTH_SHORT).show();
});
builder.setNegativeButton("取消", (dialog, which) -> {Toast.makeText(this, "点击了取消", Toast.LENGTH_SHORT).show();
});AlertDialog alertDialog = builder.create();alertDialog.show();new Thread(() -> {try {Thread.sleep(5 * 1000);alertDialog.dismiss();} catch (Exception e) {e.printStackTrace();}
}).start();

二、外部取消

1、普通对话框外部取消
  • 通过 setCancelable(boolean cancelable) 方法设置普通对话框是否可以通过点击外部区域来取消
AlertDialog.Builder builder = new AlertDialog.Builder(this);builder.setTitle("普通对话框");
builder.setMessage("确定退出吗?");
builder.setPositiveButton("确定", (dialog, which) -> {Toast.makeText(this, "点击了确定", Toast.LENGTH_SHORT).show();
});
builder.setNegativeButton("取消", (dialog, which) -> {Toast.makeText(this, "点击了取消", Toast.LENGTH_SHORT).show();
});builder.setCancelable(false); // 不建议使用AlertDialog alertDialog = builder.create();alertDialog.show();
2、单选对话框外部取消
  1. 通过 setCancelable(boolean cancelable) 方法设置单选对话框是否可以通过点击外部区域来取消

  2. 但是不建议对单选对话框禁止点击外部区域来取消,因为用户可能误触发了单选对话框,本来不想做选择

AlertDialog.Builder builder = new AlertDialog.Builder(this);builder.setTitle("单选对话框");String[] items = {"物理", "化学", "生物", "历史"};
builder.setSingleChoiceItems(items, -1, (dialog, which) -> {Toast.makeText(this, "选择了:" + items[which], Toast.LENGTH_SHORT).show();dialog.dismiss();
});builder.setCancelable(false); // 不建议使用AlertDialog alertDialog = builder.create();alertDialog.show();
3、多选对话框外部取消
  1. 通过 setCancelable(boolean cancelable) 方法设置多选对话框是否可以通过点击外部区域来取消

  2. 但是不建议对多选对话框禁止点击外部区域来取消,因为用户可能误触发了多选对话框,本来不想做选择

AlertDialog.Builder builder = new AlertDialog.Builder(this);builder.setTitle("多选对话框");String[] items = {"胡萝卜", "白菜", "菠菜", "土豆", "黄瓜", "西红柿"};
boolean[] check = {false, false, false, false, false, false};
builder.setMultiChoiceItems(items, check, (dialog, which, isChecked) -> {if (isChecked) {check[which] = true;Toast.makeText(this, "你选中了:" + items[which], Toast.LENGTH_SHORT).show();} else {check[which] = false;Toast.makeText(this, "你取消了:" + items[which], Toast.LENGTH_SHORT).show();}
});builder.setCancelable(false); // 不建议使用AlertDialog alertDialog = builder.create();alertDialog.show();
4、列表对话框外部取消
  1. 通过 setCancelable(boolean cancelable) 方法设置列表对话框是否可以通过点击外部区域来取消

  2. 但是不建议对列表对话框禁止点击外部区域来取消,因为用户可能误触发了列表对话框,本来不想做选择

AlertDialog.Builder builder = new AlertDialog.Builder(this);builder.setTitle("课程安排:");String[] items = {"第一节(数学)", "第二节(地理)", "第三节(历史)", "第四节(美术)"};
builder.setItems(items, (dialog, which) -> {Toast.makeText(this, items[which], Toast.LENGTH_SHORT).show();
});builder.setCancelable(false);AlertDialog alertDialog = builder.create();alertDialog.show();

三、冲突问题

1、单选对话框冲突问题
  • setSingleChoiceItems 方法与 setMessage 方法显示区域互相冲突,同时使用时,setMessage 方法设置的内容会覆盖掉 setSingleChoiceItems 方法设置的内容
AlertDialog.Builder builder = new AlertDialog.Builder(this);builder.setTitle("单选对话框");
builder.setMessage("这是单选对话框");
String[] items = {"物理", "化学", "生物", "历史"};
builder.setSingleChoiceItems(items, -1, (dialog, which) -> {Toast.makeText(this, "选择了:" + items[which], Toast.LENGTH_SHORT).show();dialog.dismiss();
});AlertDialog alertDialog = builder.create();alertDialog.show();
2、多选对话框冲突问题
  • setMultiChoiceItems 方法与 setMessage 方法显示区域互相冲突,同时使用时,setMessage 方法设置的内容会覆盖掉 setMultiChoiceItems 方法设置的内容
AlertDialog.Builder builder = new AlertDialog.Builder(this);builder.setTitle("多选对话框");
builder.setMessage("这是多选对话框");
String[] items = {"胡萝卜", "白菜", "菠菜", "土豆", "黄瓜", "西红柿"};
boolean[] check = {false, false, false, false, false, false};
builder.setMultiChoiceItems(items, check, (dialog, which, isChecked) -> {if (isChecked) {check[which] = true;Toast.makeText(this, "你选中了:" + items[which], Toast.LENGTH_SHORT).show();} else {check[which] = false;Toast.makeText(this, "你取消了:" + items[which], Toast.LENGTH_SHORT).show();}
});AlertDialog alertDialog = builder.create();alertDialog.show();
3、列表对话框冲突问题
  • setItems 方法与 setMessage 方法显示区域互相冲突,同时使用时,setMessage 方法设置的内容会覆盖掉 setItems 方法设置的内容
AlertDialog.Builder builder = new AlertDialog.Builder(this);builder.setTitle("课程安排:");
builder.setMessage("这是列表对话框");
String[] items = {"第一节(数学)", "第二节(地理)", "第三节(历史)", "第四节(美术)"};
builder.setItems(items, (dialog, which) -> {Toast.makeText(this, items[which], Toast.LENGTH_SHORT).show();
});builder.setCancelable(false);AlertDialog alertDialog = builder.create();alertDialog.show();

四、dismiss 方法与 hide 方法

1、基本介绍
  1. dismiss 方法:用于完全关闭并移除 AlertDialog,一旦调用此方法,AlertDialog 将不再显示在屏幕上,且相关的资源会被移除

  2. hide 方法:用于关闭 AlertDialog,一旦调用此方法,AlertDialog 将不再显示在屏幕上,但相关的资源不会被移除

2、演示
AlertDialog.Builder builder = new AlertDialog.Builder(this);builder.setTitle("普通对话框");
builder.setMessage("确定退出吗?");
builder.setPositiveButton("确定", (dialog, which) -> {Toast.makeText(this, "点击了确定", Toast.LENGTH_SHORT).show();
});
builder.setNegativeButton("取消", (dialog, which) -> {Toast.makeText(this, "点击了取消", Toast.LENGTH_SHORT).show();
});AlertDialog alertDialog = builder.create();alertDialog.show();Handler handler = new Handler();handler.postDelayed(() -> alertDialog.hide(), 5 * 1000);
http://www.yayakq.cn/news/178443/

相关文章:

  • 建设网站需要准备哪些内容做pc端网站资讯
  • 沧州做网站wordpress 多语言版本号
  • 公司做网站收费360打不开建设银行的网站
  • 宁波自助建站系统做网站卖链接
  • 建设网站的视频视频网站 不备案
  • 南通网站制作淮南公司网站建设
  • 自建网站阿里云备案通过后怎么做asp网站发送邮件
  • 东莞工程网站建设php网站建设详细教程
  • 怎么用div布局做网站广州市天河区住房和建设局网站
  • 长沙市网站推广电话自己做网站要买什么
  • 重庆专业微信网站制作南昌县网页设计
  • 胶南网站制作哪有做奇石网站
  • 外贸网站建设有什么需要注意的吗顺德精品网站建设
  • 最新设计网站大全深圳网站建设公司怎么样
  • 网站规划和网站建设晋江做网站的公司
  • 网站建设 方案下载如何把一个静态网站
  • seo做多个网站wordpress显示阅读量
  • 建设一个校园网站的可行性建e网室内设计网现代简约
  • 河南省建设厅网站建设领域涉黑诸城做网站收费
  • 网页设计新建站点沂水做网站
  • 新手如何开微商城店百度关键词如何优化
  • 手机免费制作网站模板免费下载温州本地网站平台
  • 做学校和企业对接的网站做模板网站的公司
  • 哪里有html企业网站模板下载电子商务网站设计模板
  • 手机百度屏蔽我网站关键词做网站 图片格式
  • 哈尔滨大型网站制作开发三网合一网站建设全包费用
  • wordpress防注册北京seo排名公司
  • 昆山玉山网站建设网站建设价格请咨询兴田德润
  • 温岭 网站建设做外贸网站一定要会英语吗
  • 揭阳网站制作方案定制浙江平板网站建设