`
cyhcheng
  • 浏览: 60288 次
  • 性别: 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[] { "飞狐外传", "雪山飞狐", "连城诀", "天龙八部", "射雕英雄传", "白马啸西风", "鹿鼎记", "笑傲江湖", "书剑恩仇录", "神雕侠侣", "侠客行", "倚天屠龙记", "碧血剑", "鸳鸯刀", "越女剑" };
	}
}

 

分享到:
评论

相关推荐

    对话框的几种实现方式

    在Java中,`JFileChooser`用于文件选择,`JColorChooser`用于颜色选择,`JOptionPane`则提供了多种系统对话框选项。 四、自定义对话框(Custom Dialog Box) 自定义对话框允许开发者根据应用需求创建具有特定功能和...

    Qt基本对话框实现

    4. **处理用户输入**:当用户做出选择并关闭对话框后,可以通过对话框的成员变量或信号槽机制来获取用户的选择并进行后续处理。 在提供的`DialogExample`中,可能包含了上述各种对话框的示例代码,通过查看和学习...

    2中方法实现对话框

    标题中的“2种方法实现对话框”意味着我们将探讨在编程中创建对话框的两种常见技术。对话框通常在用户需要进行交互或确认某些操作时出现,例如保存文件、选择选项或者显示警告信息。在IT领域,对话框是人机交互的...

    WPF 自定义对话框 超级完美版

    在这个项目中,开发者可以找到一种方法来创建具有独特外观和行为的对话框,而不仅仅是依赖于系统默认的MessageBox。 首先,自定义对话框通常包括以下组件: 1. **对话框模板**:WPF允许通过XAML语言定义对话框的...

    VC++实现对话框编程

    对话框提供了一种集中的界面,用户可以在其中输入数据、选择选项或执行特定的操作。以下是对"VC++实现对话框编程"这个主题的详细说明。 **一、对话框基础** 对话框(Dialog Box)是Windows应用程序中的一种窗口,...

    易语言多选对话框模块

    在易语言中,"多选对话框模块"是一个重要的用户界面元素,它允许用户在弹出的窗口中选择多个选项,类似于我们在日常使用电脑时常见的文件选择对话框。 多选对话框模块的核心功能是提供一个交互式的界面,让用户能够...

    qt退出对话框

    若用户点击“取消”,则调用`reject()`方法关闭对话框而不执行退出操作。 5. **事件处理** 除了点击按钮,还可以监听其他事件,例如在主窗口上按下关闭按钮(通常表现为右上角的“X”)。这时,可以重写`...

    Android常用对话框源码对话框大全

    - 显示对话框通常通过`show()`方法,关闭则调用`dismiss()`。对于`DialogFragment`,还可以使用`dismissAllowingStateLoss()`在特定情况下关闭。 10. **适配不同设备和屏幕尺寸** - 对话框的设计需要考虑到不同...

    对话框伸缩功能的实现

    这种功能常见于设置窗口或复杂的输入表单,用户可以根据需求选择查看或隐藏高级选项。 实现这一功能主要涉及以下几个步骤: 1. **设计UI布局**:使用灵活的布局管理器,如Java Swing中的GridBagLayout,Android的...

    一个封装好的ios风格的选择对话框

    本资源提供了一个封装好的Android组件,它实现了iOS风格的选择对话框,适用于那些希望在Android设备上引入iOS设计元素的开发者。这个组件的特色在于其模仿了iOS的UI设计,为Android用户带来一种熟悉而现代的交互体验...

    VC基于对话框的属性页实现工程

    对话框是一种模态窗口,用户在完成特定任务或提供信息前不能关闭它。在VC++中,对话框通常由资源编辑器设计,包含各种控件如按钮、文本框、复选框等。而属性页则是对话框的一种特殊形式,它允许用户通过一个统一的...

    两种方式实现等待对话框

    通过WaitDialogDemo这个项目,我们可以深入学习和实践这两种方法,理解它们的工作原理,并根据项目需求灵活选择合适的方式实现等待对话框。在实际开发中,为了提高用户体验,可以考虑添加取消操作的监听,以及根据...

    delphi 实现延时自动关闭对话框.docx

    在Delphi编程中,有时我们需要实现一个功能,即在用户打开某个对话框后,如果在一段时间内没有任何操作,对话框会自动关闭。这个功能在一些警告或者确认信息的临时对话框中非常常见,可以提高用户体验并减少资源占用...

    Android 之 对话框总结

    在Android开发中,对话框(Dialog)是一种非常重要的组件,用于与用户进行交互,提供临时信息展示、选项选择等操作。本篇文章将对Android中的对话框进行深入的总结,包括基本概念、类型、使用方法以及自定义对话框的...

    对话框编程

    除了标准控件外,开发者还可以创建自定义对话框控件,继承自`CWnd`,并实现所需的行为和绘制。自定义控件可以更好地满足特定的界面需求,提供更丰富的用户体验。 ### 对话框的使用场景 对话框常用于: - 输入和确认...

    易语言API弹出颜色选择对话框

    2. 初始化`CHOOSECOLOR`结构体:设置结构体中的各个字段,如颜色选择的初始值、对话框的选项标志等。 3. 调用`ChooseColorA` API函数:将初始化好的`CHOOSECOLOR`结构体作为参数传递给API函数,执行颜色选择对话框的...

    androdi AlertDialog实现各种类型的对话框

    - **单选列表**:使用`setSingleChoiceItems()`方法可以展示一个单选列表,通常用于让用户从多个选项中选择一个。 ```java String[] items = {"选项1", "选项2", "选项3"}; builder.setSingleChoiceItems(items, -1...

    vb调用颜色对话框

    总结,VB调用颜色对话框是通过`ColorDialog`控件实现的,它提供了丰富的选项供用户选择颜色。开发者可以通过设置其属性和处理对话框返回的结果,灵活地集成到应用程序中。掌握这一技能,能够提升软件的用户体验,使...

    用Delphi编写的消息对话框的自动关闭

    为了实现自动关闭,我们可以自定义一个`TForm`或者继承`TCustomForm`,并添加必要的控件,如标签、按钮等,以模拟对话框的行为。然后,通过设置一个定时器(`TTimer`组件),在指定时间后触发关闭事件。以下是一个...

    WheelView底部弹出滑动选择器(对话框实现)

    本教程将介绍如何利用`WheelView`结合`Dialog`来实现一个底部弹出的滑动选择器,该实现方式代码简洁,易于理解,可以直接应用到你的项目中。 首先,我们来了解`WheelView`。`WheelView`是Android中的一个可滚动视图...

Global site tag (gtag.js) - Google Analytics