`
cyhcheng
  • 浏览: 57703 次
  • 性别: Icon_minigender_1
  • 来自: 北京
社区版块
存档分类
最新评论

实现不选择选项则不可以关闭的对话框之方法二

 
阅读更多

本方法在打开对话框后,如果没有选中项则禁用Positive Button,选中了选项后则使Positive Button可用.

import android.app.Activity;
import android.app.AlertDialog;
import android.app.Dialog;
import android.content.DialogInterface;
import android.os.Bundle;
import android.view.View;
import android.view.View.OnClickListener;
import android.widget.Button;
import android.widget.Toast;

public class MainActivity extends Activity {
	private Button btnOpenDialog;
	private String[] books = null;
	private Activity activity;
	private int selectedBookIndex = -1;
	private AlertDialog alertDialog;

	@Override
	protected void onCreate(Bundle savedInstanceState) {
		super.onCreate(savedInstanceState);
		initBooks();
		setContentView(R.layout.activity_main);
		activity = this;
		btnOpenDialog = (Button) findViewById(R.id.btnOpenDialog);
		btnOpenDialog.setOnClickListener(new OnClickListener() {

			@Override
			public void onClick(View v) {
				alertDialog = new AlertDialog.Builder(activity).setTitle(R.string.hello_world).setSingleChoiceItems(books, selectedBookIndex, new DialogInterface.OnClickListener() {

					@Override
					public void onClick(DialogInterface dialog, int which) {
						selectedBookIndex = which;
						allowCloseDialogByTapPositiveButton();
					}

				}).setNegativeButton("取消", new DialogInterface.OnClickListener() {

					@Override
					public void onClick(DialogInterface dialog, int which) {
						selectedBookIndex = -1;
						// distoryDialog(dialog);
						return;
						
					}
				}).setPositiveButton("确定", new DialogInterface.OnClickListener() {

					@Override
					public void onClick(DialogInterface dialog, int which) {
						if(selectedBookIndex == -1){
							alertDialog.getButton(Dialog.BUTTON_POSITIVE).setEnabled(false);
							Toast.makeText(activity, "对不起,你不买书,不能走购物通道啊!", Toast.LENGTH_LONG).show();
							// keepDialog(dialog);
							return;
						}else{
							Toast.makeText(activity, "您选择了图书:" + books[selectedBookIndex] + ".", Toast.LENGTH_LONG).show();
						}
					}
				}).show();
				alertDialog.setCancelable(false);
				alertDialog.setCanceledOnTouchOutside(false);
				allowCloseDialogByTapPositiveButton();
				
			}
		});
	}
	
	private void allowCloseDialogByTapPositiveButton() {
        if(selectedBookIndex > -1) {
			alertDialog.getButton(Dialog.BUTTON_POSITIVE).setEnabled(true);
		}else{
			alertDialog.getButton(Dialog.BUTTON_POSITIVE).setEnabled(false);
		}
    }

	void initBooks() {
		books = new String[] { "飞狐外传", "雪山飞狐", "连城诀", "天龙八部", "射雕英雄传", "白马啸西风", "鹿鼎记", "笑傲江湖", "书剑恩仇录", "神雕侠侣", "侠客行", "倚天屠龙记", "碧血剑", "鸳鸯刀", "越女剑" };
	}
}

 

分享到:
评论

相关推荐

    JS+ACTIVEX实现网页选择本地目录路径对话框

    网页选择本地目录路径对话框,使用ACTIVEX对象遍历本地磁盘和目录,只需网页启用相关ACTIVEX的INTERNET选项,对本地浏览器的安全性要求不高,简单易用。网页选择本地目录路径对话框样例 1.打开主页面”select.html”...

    申请单管理系统

    点击查询后,可以根据所选条件进行联合查询,其中,申请单号、申请单类型为精确查询,申请单标题为模糊查询,“申请单状态”如果选择“待审批”,则只查询待审批的申请单,如果选择“已审批”则查询待审批以外的申请...

    电脑高手必备 Windows系统35招实用技巧

     (9)在“高级音频属性”对话框中选择“性能”选项卡,这里提供了对音 频播放及其硬件加速和采样率转换质量的调节功能。要说明的是,并不是所 有的选项都是越高越好,你需要根据自己的硬件情况进行设定,较好的...

    奥鹏东北师范大学计算机应用基础在线作业2-0005满分作业参考.docx

    计算机应用基础18秋在线作业2-0005 Windows98中,文件的属性不包括 选项A是:只读属性 选项B是:存档属性 选项C是:系统属性 选项D是:只写属性 正确选项:D 关于硬件系统和软件系统的概念,下列叙述不正确的是 选项...

    奥鹏作业计算机应用基础18秋在线作业2-0005.docx

    奥鹏作业计算机应用基础18秋在线作业2-0005 计算机应用基础18秋在线作业2-0005 Windows98中,文件的属性不包括 选项【A】:只读属性 选项【B】:存档属性 选项【C】:系统属性 选项【D】:只写属性 正确选项:D 关于硬件...

    多媒体教室

    提交完成之后教师机可以右击屏幕右下角的图标或班级模型的空白区,选择"察看提交文件夹",则教师可以察看学生所提交的文件。  3.7窗口显示模式 在全屏接收屏幕广播时,如果教师未锁定学生机键盘鼠标,学生就可以...

    excel操作技巧--方法介绍

    (1)选中要输入英文的列,单击“数据”菜单,选择“有效性...”命令,在弹出的“数据有效性”对话框中,选中“输入法模式”选项卡,在“模式”框中选择“关闭(英文模式)”命令,单击“确定”按钮。  (2)选中...

    editplus 代码编辑器html c++ jsp css

    右键单击文档标签工具条,弹出菜单中选择“标签选项”,选中“用鼠标中间的按钮关闭”,这里包括鼠标的滚轮。 【8】软件技巧——如何去掉 EditPlus 保存文本文件时的添加后缀提示? 如果你使用 EditPlus 进行文本...

    您可能没有权限使用网络资源。请与这台服务器的管理员联系以查明您是否有访问权限。拒绝访问解决方法

    具体的修改方法如下:打开“我的电脑”中的“工具”,选择“文件夹属性”,调出“查看”标签,在“高级设置”部分滚动至最底部将“简单文件共享(推荐)”前面的选择取消,另外如果选项栏里还有“Mickey Mouse”项也将...

    Qt Creator 的安装和hello world 程序+其他程序的编写--不是一般的好

    候不点enterBtn,而是直接关闭对话框,那么此时整个程序应该结束执行,但 是事实是这样的吗?如果你此时对程序进行了改动,再次按下run 按钮,你会发 现又出现了error: collect2: ld returned 1 exit status 的错误...

    MAPGIS地质制图工具

    2、四点插入等高线必需先选择两条线(若未先选择线当点击完第三个点时即弹出对话框,且插入会失败),然后在线上点四个点,前两点在一条线上,后两点在另外一条线上。如果出现乱线,先改一条线的方向再试。 3、直接...

    Gui中使用的对话框的发明-研究论文

    典型的对话框显示在一个小窗口中,带有一些文本消息以及一些可供用户选择的选项。 但是,在编程和实现常规对话框时存在某些困难,例如,繁重的编程工作,硬编码消息的刚性,掩盖屏幕空间等。 需要克服对话框的这些...

    京瓷打印机培训资料(软件).pdf

    Aquarius系列 技术培训 (软件部份) 1 扫描使用方法 打印图像浓度调整 网络连接时打印驱动安装 固件升级 更换机板后的注意点 2 扫描使用方法 3 扫描使用方法 首先,通过USB线连接机器, 然后,使用随机驱动光盘或从...

    Word2003使用技巧大全.doc

    你可以一次性关闭所有打开的文档,方法是:按住Shift键,单击“文件”菜单,在“文件”菜单中将出现“全部关闭”选项,单击该命令即可一次性关闭所有打开的文档,且在关闭文档前Word将提示你保存所作的改动。

    EditPlus V3.51 build 1036 中文版

    方法二,与Word要实现此项功能一样,必须要按住“Alt”再用鼠标进行才行。 2、为什么不能进行列选择?会提示“无法该自动换行模式中使用该命令”? 解决:这个提示应该是“无法在自动换行模式中使用该命令” 我刚...

    飞秋2013专业版

    同时也支持拖放功能,这是一种快捷的操作方式,操作方法是选中要发送的文件或文件夹,按住鼠标左键不动,把文件拖放到聊天对话框中,松掉鼠标左键即可。点击发送按钮把文件传送给对方。如果要查看发送的文件进度,...

    硕士生,博士生论文排版技巧方法

    在插入或删除图、表、公式时编号的维护就成为一个大问题,比如若在第二章的第一张图(图2-1)前插入一张图,则原来的图2-1变为2-2,2-2变为2-3,…,更糟糕的是,文档中还有很多对这些编号的引用,比如“流程图...

    MicrosoftHTMLHelpWorkshopV1.3汉化版.rar

    chm 内容相符的文字(如果不指定,则软件默认为“帮助”):按[Project]项目选项中左边第三个按钮“新建/编辑窗口显示风格”,在弹出的窗口类型中随便输入一个名字如“12”,按“OK”后就会进入“窗口属性”定义...

    vss如何使用(图解)

    如果你只需读取某一文档而并不需要编辑它,你可以执行取出(get)命令,将文档放入你的工作文件夹,再选择查看文档(view),来查看你的文档的最新版本。 1.2 VSS中的项目 项目(project)是指用户存储在VSS数据库中的...

Global site tag (gtag.js) - Google Analytics