`
Everyday都不同
  • 浏览: 713638 次
  • 性别: Icon_minigender_1
  • 来自: 宇宙
社区版块
存档分类
最新评论

弹出列表对话框,选择列表项后返回结果并消失

阅读更多

最近的开发过程中,有选择时间段的需求,需要弹出一个列表对话框,用户选择完列表项之后返回用户选择结果,当前列表项消失。

 

首先,在res/layout文件夹定义一个列表项对应的布局文件以便加载:

<?xml version="1.0" encoding="utf-8"?>
<LinearLayout xmlns:android="http://schemas.android.com/apk/res/android"
    android:layout_width="match_parent"
    android:layout_height="match_parent"
    android:orientation="vertical" >
   <ListView 
       android:id="@+id/list"
       android:layout_width="match_parent"
       android:layout_height="wrap_content"
       android:entries="@array/time_zone"
       android:divider="#cccccc"
       android:dividerHeight="1px" /> 

</LinearLayout>

 

 

单击按钮,弹出该布局:

Button time = (Button) findViewById(R.id.time);
time.setOnClickListener(new OnClickListener() {
			
	@Override
	public void onClick(final View v) {
//	LayoutInflater inflater = LayoutInflater.from(this);
	LinearLayout ll = (LinearLayout) getLayoutInflater().inflate(R.layout.time, null);
	final ListView lv = (ListView) ll.findViewById(R.id.list);
	AlertDialog.Builder builder = new AlertDialog.Builder(TabActivity_book.this)
//		.setSingleChoiceItems(items, 0, new DialogInterface.OnClickListener() {
//						
//	@Override
//	public void onClick(DialogInterface dialog, int which) {
//		((Button)v).setText(items[which]);
//							
//	}
//	});
	.setView(ll);
	dialog = builder.create();
	dialog.show();
				
	lv.setOnItemClickListener(new OnItemClickListener() {
					
	@Override
	public void onItemClick(AdapterView<?> parent, View view,
			int position, long id) {
		time.setText(lv.getItemAtPosition(position).toString());
//		ll.removeView(lv);
		dialog.dismiss();
	}
	});
	}
});

 

 

注:如果把

LinearLayout ll = (LinearLayout) getLayoutInflater().inflate(R.layout.time, null);
final ListView lv = (ListView) ll.findViewById(R.id.list);

 这2段代码放在监听器方法的外面,则在单击按钮选择时间后再次单击,会报异常:

 

java.lang.IllegalStateException: The specified child already has a parent. You must call removeView() on the child's parent first.

原因是ListView既属于LinearLayout,而LinearLayout又是由Dialog弹出的——如果把加载页面和相应的列表项放在外面时,在第一次弹出列表框时,已经kill掉了dialog,这就间接kill掉了属于他的LinearLayout。当用户再次单击按钮试图再次加载该布局文件时,LinearLayout已经在上一次(第一次)被kill掉了(因为他是放在外面的)。所以报错!

解决办法则是把这2行代码放在监听器方法里面,每单击一次就重新创建一次Linearlayout,即加载布局文件,在用户选择列表项后,dismiss该弹出的对话框。

 

 

分享到:
评论

相关推荐

    《程序天下:JavaScript实例自学手册》光盘源码

    1.15 离开页面时弹出对话框 1.16 判断页面是否添加了W3C声明 1.17 屏蔽网页中的脚本 1.18 以频道模式打开页面 1.19 自动识别网页类型 1.20 在网页中动态添加Script脚本 1.21 用JavaScript随机修改页面的标题 1.22 ...

    程序天下:JavaScript实例自学手册

    1.15 离开页面时弹出对话框 1.16 判断页面是否添加了W3C声明 1.17 屏蔽网页中的脚本 1.18 以频道模式打开页面 1.19 自动识别网页类型 1.20 在网页中动态添加Script脚本 1.21 用JavaScript随机修改页面的标题 1.22 ...

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

    建立好后工程文件列表如下图。 2.新建对话框类,如下图,在新建中,选择Qt Designer Form Class。 3.选择Dialog without Buttons。 4.类名设为myDlg。 5.点击Finish 完成。注意这里已经默认将其加入到了我们刚建的...

    MicrosoftHTMLHelpWorkshopV1.3汉化版.rar

    单击“窗口”按钮,在弹出对话框中设置窗口名称和窗口属性。如图3-3。  以下的按钮分别是“位图(Bitmaps…)”、“映射(Maps…)”、“别名(Alias…)”、“设置(Config…)”、“数据文件(Data Files…)”...

    易语言程序免安装版下载

    修改扩展界面支持库三,解决单击卷帘菜单后导致日期框不能弹出下拉窗口的BUG。 4. 修改XP风格支持库,解决GDI资源泄露,以及在使用通用组件库六时组合框标题出现重影的BUG。 5. 修改扩展界面支持库一,解决树形框...

    C++ MFC实现飞机大战游戏

     (7)通过对话框的弹出可提示玩家是否查看游戏说明、是否进入下一关、是否重新开始等消息,使得玩家可自己选择。 2. 相关技术 2.1 Windows定时器技术  Windows定时器是一种输入设备,它周期性地在每经过一个指定...

    KODExplorer 芒果云-资源管理器

    - 弹出层中的弹出层关闭,父窗口失去焦点问题。 - 代码中grunt部分代码拆分开,放到程序外面;提交到git、osc - 桌面:删除alert enter快捷键删除 - install 检测 加入跳过,(只判断用到的函数) 加入多语言 - ...

    ExtAspNet_v2.3.2_dll

    -Grid增加GetNoSelectionAlertInParentReference函数,用来表示没有选中任何一项时在父页面弹出对话框的JS代码。 -修正IE7下不能以下划线作为CSS中类名的前缀的BUG(feedback:Steve.Wei)。 -添加定时器控件Timer,...

    ExtAspNet v2.2.1 (2009-4-1) 值得一看

    -Grid增加GetNoSelectionAlertInParentReference函数,用来表示没有选中任何一项时在父页面弹出对话框的JS代码。 -修正IE7下不能以下划线作为CSS中类名的前缀的BUG(feedback:Steve.Wei)。 -添加定时器控件Timer,...

    flash shiti

    这个电影中将增加两个新层:test1 和test2,而原有的layer1 将消失 □ C. 这个电影中将增加两个新层:test1 和test2,而原有的图层维持不变 □ D. 这个电影中将增加两个新层:test1 和test2,而原有的layer1 成为空...

    大名鼎鼎SWFUpload- Flash+JS 上传

     file_dialog_start_handler : file_dialog_start_function, 当文件选取对话框弹出前出发的事件处理函数  file_queued_handler : file_queued_function,  file_queue_error_handler : file_queue_error_function...

    计算机应用技术(实用手册)

    进入后,你可以用方向键移动光标选择CMOS设置界面上的选项,然后按Enter进入副选单,用ESC键来返回上一级菜单,用PAGE UP和PAGE DOWN键来选择具体选项,F10键保留并退出BIOS设置。 1.STANDARD CMOS SETUP(标准...

    IIS6.0 IIS,互联网信息服务

    这是一个触发UAC的操作,如果Windows Vista没有关闭UAC,则会弹出提示信息,确认并继续; 如果仅需要IIS 7.0支持静态内容,可直接选中“Internet信息服务”,如果希望 Web 服务器支持动态内容,则需展开“万维网...

    C# for CSDN 乱七八糟的看不懂

    预定义类型 下表列出了预定义类型,并说明如何使用。 类型 object 说明 所有其他类型的最终 基类型 字符串类型; 字符串是 Unicode 字符序列 8 位有符号整型 16 位有符号整型 32 位有符号整型 64 位有符号整型 示例...

    applem2_20120610苹果引擎配套工具,内有登陆器配置

    联系方式: ...   -------------------------------------------------------------...2、修正上一版更新后出现人物背包和仓库物品消失问题 3、修正使用野蛮冲撞撞出安全区人物处于无敌状态问题 4、增加怪物名称支持显示...

Global site tag (gtag.js) - Google Analytics