基于地图的短信追踪小练习(5)对话框之item的添加
2016-10-22 14:22
246 查看
我们基于一个“”朋友列表“”的活动,点击界面中的添加按钮,这个时候,在中间弹出一个小框,可以输入新朋友的名字和电话号码,这就是对话框了。
首先,我们采用的是自定义的对话框:
1.整个布局有一个背景图片(这是最外层的布局,描述的是整个对话框,这个对话框的方向应该是垂直的)
2.然后是两个地位等价,垂直排列的布局
3.上一条中两个布局都是水平的,由提示输入的textview和输入框edittext构成
4.第三个布局,包裹了两个button,对应确定和取消,可以使用背景图片设置样式
接下来我们要在主界面中设置点击事件和点击事件里的逻辑(启动设置对话框)
建立对话框对象的时候,我们setView,直接设置布局
还有一些可选方法,比如:
setTitle()
setPositiveButton()
setNegativeButton()
它们都返回的是this类型(即调用它们的对象的类型),所以可以直接火车式调用。
我们不用这个设置,都采用我们自己的图片,所以不采用这些方法,接下来我们自己设置确定和取消的点击事件。
发现空指针异常,很高兴,因为这是一种简单的异常,异常之后瞬间明白过来,虽然安卓所有的布局文件的id都是能找到不报编译错的,但其实仅仅是找到,没有加载相应布局的话,它是空的,就会报空指针异常,所以代码由原来改成改版:
原来(异常):
改版:
好了,这就是我们的取消的逻辑了,用对话框对象效用dismiss方法。
好,另一个,对于确定的逻辑:
显然我们要获取到edittext的输入内容,并且用来设置一个新的朋友对象,放进list。
放下list和实体对象的改变不表,来看核心代码:
点击勾勾之后,我们成功在list中增加了一个相应信息朋友
首先,我们采用的是自定义的对话框:
1.整个布局有一个背景图片(这是最外层的布局,描述的是整个对话框,这个对话框的方向应该是垂直的)
2.然后是两个地位等价,垂直排列的布局
3.上一条中两个布局都是水平的,由提示输入的textview和输入框edittext构成
4.第三个布局,包裹了两个button,对应确定和取消,可以使用背景图片设置样式
接下来我们要在主界面中设置点击事件和点击事件里的逻辑(启动设置对话框)
LayoutInflater inflater = getLayoutInflater(); View layout = inflater.inflate(R.layout.dialog_add_friend,null); ad = new AlertDialog.Builder(FriendListActivity.this).setView(layout).show();建立layout的时候,我们第二个参数设为null,直接加载整个布局
建立对话框对象的时候,我们setView,直接设置布局
还有一些可选方法,比如:
setTitle()
setPositiveButton()
setNegativeButton()
它们都返回的是this类型(即调用它们的对象的类型),所以可以直接火车式调用。
我们不用这个设置,都采用我们自己的图片,所以不采用这些方法,接下来我们自己设置确定和取消的点击事件。
发现空指针异常,很高兴,因为这是一种简单的异常,异常之后瞬间明白过来,虽然安卓所有的布局文件的id都是能找到不报编译错的,但其实仅仅是找到,没有加载相应布局的话,它是空的,就会报空指针异常,所以代码由原来改成改版:
原来(异常):
//点击叉叉 button3 = (Button)findViewById(R.id.btn_dialog_close); button3.setOnClickListener(new OnClickListener() { @Override public void onClick(View v) { ad.dismiss(); } });
改版:
//点击叉叉 button3 = (Button)layout.findViewById(R.id.btn_dialog_close); button3.setOnClickListener(new OnClickListener() { @Override public void onClick(View v) { ad.dismiss(); } });
好了,这就是我们的取消的逻辑了,用对话框对象效用dismiss方法。
好,另一个,对于确定的逻辑:
显然我们要获取到edittext的输入内容,并且用来设置一个新的朋友对象,放进list。
放下list和实体对象的改变不表,来看核心代码:
//点击勾勾 /* */ button2 = (Button)layout.findViewById(R.id.btn_dialog_ok); button2.setOnClickListener(new OnClickListener() { @Override public void onClick(View v) { String name = ((EditText)layout.findViewById(R.id.txt_friend_name)).getText().toString(); String num = ((EditText)layout.findViewById(R.id.txt_friend_number)).getText().toString(); Friends fri = new Friends(name,num); ListAll.friendslist.add(fri); ad.dismiss(); } });
点击勾勾之后,我们成功在list中增加了一个相应信息朋友
相关文章推荐
- 基于地图的短信追踪小练习(6)对话框之item的删除
- 基于地图的短信追踪小练习(2)百度地图定位到自己的位置
- 基于地图的短信追踪小练习(4)主界面布局的一些内容
- 基于地图的短信追踪小练习(8)地图覆盖物点击事件与活动间数据的传递
- 基于地图的短信追踪小练习(7)经纬度的设置与显示
- 基于地图的短信追踪小练习(3)短信的接收与发送
- 基于地图的短信追踪小练习(1)百度地图的初创建
- 基于MFC对话框程序中添加菜单栏 (CMenu)
- 在基于对话框的MFC中添加工具栏以及工具栏提示信息并改变图标支持256色
- VC 6.0 中添加简单的基于对话框的工程
- MFC 基于对话框的项目如何添加子对话框以及相关知识
- 为基于MFC的对话框添加ToolTip的简单方法
- VS2008基于对话框,在资料里添加了菜单,界面不显示菜单问题
- MFC中 给基于对话框的应用程序添加登陆界面
- 关于VC6中基于对话框的程序,往Combox 添加一个CComboBox变量,然后程序编译运行,窗口不出现的问题
- 基于对话框的应用程序添加启动画面
- vc基于对话框的应用程序添加启动画面
- 为基于MFC的对话框添加ToolTip的简单方法
- MFC 基于对话框 程序,如何添加状态栏
- 基于对话框程序,自定义工具栏(支持真彩色图标,可添加文字)