android Notepad

本文介绍在Android开发中使用SQLite数据库实现笔记管理功能,包括添加、列表和删除笔记。通过创建SQLiteOpenHelper子类封装数据库操作,实现数据存储与管理。在Activity中通过Option菜单与上下文菜单提供交互,实现新建、编辑与删除笔记的操作。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

本文转载http://android.yaohuiji.com/archives/2575,图片,代码没有写上来了,用于积累,后面有附件为最后的代码工程

我们分三讲来做这个项目,本讲的目标是可以添加、列表和删除笔记,但是每个笔记的内容为空,标题写死,这样我们可以在一个Activity中就可以完成这些的功能。

在Android开发中数据存储最常用的方法就是使用sqlite数据库,这次也一样,我们创建一个SQLiteOpenHelper的子类来处理和数据库相关的操作,它把数据库简单的做了一点封装。下面是它的代码,同样相关解释写在注释里了:

现在我们该写MainActivity.java部分了,这次我们的Activity继承的是ListActivity类,关于ListActivity的知识需要补补课的同学点这里。在这部分的代码里,我们把数据对象辅助对象(DbHelper)和数据库对象(db)作为成员变量提供给其他方法,让他们可以进行数据库操作,在onCreate()方法中给这两个对象赋值。然后我们定义Option菜单,作为添加新笔记的入口,我们定义上下文菜单来处理删除某个笔记的工作。如果看着比较辛苦的话建议再回过头去复习一下关于两种菜单的知识,下面我们看看代码:

c点击键盘上的Menu按钮呼出Option菜单

d点击“新建”就能直接建立好了一条笔记,你懂得我们在代码里写死了每篇笔记的标题和内容

e在Note 2 上长时间按住不送手就会触发长按(OnLongClick)事件,它触发上下文菜单,如果你要问我它是如何触发上下文菜单的,那就去看一下 registerForContextMenu() 方法的解释^_^。你知道的上下文菜单里就一个菜单项那就是删除…

f 点击删除,Note 2 消失,数据重新载入( fillData )

下一讲我们将提供另一个Activity,专门负责添加和修改笔记内容。╮(╯▽╰)╭我和你一样期待下一讲的到来。

 

上述代码中,addNote()方法是不是已经改过了?当你点击新建菜单时,程序生成一个Intent对象,并由MainActivity窗口使用startActivityForResult()方法发送出去,此方法和startActivity方法的不同之处在于,发送此方法的Activity是要求对方生命周期结束时返回信息给它的。而接受返回信息的的方法就是onActivityResult() ,而这个方法里通过判别requestCode来决定是新建笔记还是修改原有笔记。

 

当我们增加了一个Activity之后,别忘了在AndroidManifest.xml中加入对该Activity的签名,否则系统是不知道该Activity的存在的

 

点击写好了,可以保存修改正常返回列表。但是————– 在编辑状态点击WPOFKV7VF_2N7BRLMPR`8SA  按钮终止EditAcitivity时程序就会报错!

 

看logcat中的错误信息:

09-01 05:46:11.628: ERROR/AndroidRuntime(1103): java.lang.RuntimeException: Failure delivering result ResultInfo{who=null, request=1, result=0, data=null} to activity {android.lesson45/android.lesson45.MainActivity}: java.lang.NullPointerException

说明按返回按钮的时候,并没有发送结果给MainActivity窗口。更要命的是正在编辑的信息会丢失,而这一情形在Android开发中经常遇到,譬如你正在写笔记,这时来电话了,那么你的编辑界面可能就进入后台,而你写的信息将会丢失……

好吧,这个问题我们下一讲再来个彻底的解决。这个关子不是我卖的,是官方Notepad Tutorial这么干,我觉得它这么编排还是蛮有道理的,这一讲实际上重点操练的是Activity之间传递数据,你说对吧。

下讲继续,再见各位。

 

上一讲我们有一个问题就是EditActivity窗口非正常关闭后,数据无法保存,也无法向MainActivity窗口传递附加数据而报错。所以我们想了一个解决办法。。。。。。。。。那就是不向MainActivity传数据了,数据直接在EditActivity中读取、修改、保存,而且设置在EditActivity暂时切换到后台是保存现场到savedInstanceState这个Bundle对象中去,并在下次显示是还原出来,好了思路就是这样,下面具体看看代码…… 还是睡觉吧,明天再继续。

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值