`
liqiangwaini
  • 浏览: 882 次
  • 性别: Icon_minigender_1
  • 来自: 北京
最近访客 更多访客>>
社区版块
存档分类
最新评论
阅读更多

Android Samples-Notepad分析之一

该Notepad应用包含三个Activity

1.供显示当前应用所有的日记,也就是一个日记列表,继承自ListActivity,应用启动的主页面

该Activity包含以下内容:

上下文菜单:在某一行上长按弹出相应菜单,菜单包含一个标题与删除选项,主要有以下几个方法里实现

onCreateContextMenu(ContextMenu menu, View v,ContextMenuInfo menuInfo),onContextItemSelected(MenuItem item)

 

在onCreate()里绑定一个上下文菜单,绑定方法如下:

getListView().setOnCreateContextMenuListener(this);

 

菜单:当前ListActivity没有项被选中时,只有一个添加菜单,点击跳转到内容编辑页面

 startActivity(new Intent(Intent.ACTION_INSERT, getIntent().getData()));

 采取action + uri 方式进行跳转

 

 如果当前ListActivity有选中项,会另外再动态添加二个菜单(编辑当前内容 、 编辑当前标题)+ 添加菜单

 此处采用动态添加技术,具体代码如下:

Intent[] specifics = new Intent[1];

specifics[0] = new Intent(Intent.ACTION_EDIT, uri);

MenuItem[] items = new MenuItem[1];

//采取action + data


Intent intent = new Intent(null,uri);

intent.addCategory(Intent.CATEGORY_ALTERNATIVE);

//采取 category + data


menu.addIntentOptions(Menu.CATEGORY_ALTERNATIVE, 0, 0, 

new ComponentName(this, NotepadListActivity.class), specifics, intent, 0, items);

 

 上述代码采取二种适配方式,在onPrepareOptionsMenu(Menu menu)里进行相关处理,如果manifest.xml中有匹配这二种方式,就会生成相应菜单,名称取自intent-filter 里的label,没有匹配成功,则不生成相应的菜单

 

2.单个日记的内容编辑页面,继承自Activity

当前Activity中自定义了一个编辑控件,继承自 EditText

在onCreate()里会判断当前action,编辑与插入处理方式不同,当action为插入时,会事先向ContentProvider做一次插入操作,去创建相应数据,并返回对应的Uri,数据的保存都在onPause里处理,根据相应的Uri作Update操作

 

该Activity里也有动态菜单的处理,当action为编辑里,会动态添加一个标题编辑菜单

 

3.单个日记的标题编辑页面,继承自Activty

编辑当前标题,该Activity的主题为Dialog,数据的保存也是在onPause里

 

 

这个事例是对针对ContentProvider的使用,给出的一个简单demo

ContentProvider是一个抽象类,继承它必须实现它所有抽象方法,包含如下:

 

The primary methods that need to be implemented are:

针对动态菜单的添加,data数据与manifest.xml匹配时,系统会通过getType(Uri)得到相应的MIME数据,这个数据需要开发者自己定义,格式如下:vnd.android.cursor.dir/?     vnd.android.cursor.item/?

 

 

简单写了点本人对这个事例的理解,不可能面面居到,有不理解的地方,我们可以交流交流!谢谢!

分享到:
评论
1 楼 liqiangwaini 2012-04-24  
动态菜单添加是个亮点,这样能根据不同的条件来显示相应的菜单,只需要在Manifest里配置好就OK

相关推荐

    android sdk 自带 实例(samples)

    Similar (but not identical) to the Notepad tutorial. SampleSyncAdapter Demonstrates how an application can communicate with a cloud-based service and synchronize its data with data stored locally ...

    XML Notepad

    而`Samples` 文件夹则可能包含了一些示例XML文件,用于用户学习和实践XML编辑。 XML Notepad 虽然简洁,但其丰富的特性使得XML文档的处理变得更为高效和便捷。无论是初学者还是经验丰富的开发者,都可以从中受益。...

    Android利用Intent实现记事本功能(NotePad)

    本文实例为大家分享了Intent如何实现一个简单的记事本功能的演示过程,供大家参考,具体内容如下 ...到Android SDK API 23的Samples的NotePad例子下找到app_notes.png,将其添加到该项目中,并将其换名为ch

    Robotium测试

    例如,以Android SDK/samples/android-9/NotePad为例,在Eclipse中按照以下步骤导入该项目: 1. 文件(File) -> 新建(New) -> 项目(Project) -> Android项目(Android Project) -> 从现有源码创建项目(Create Project...

    Notepad:在命令行中测试编译 Android

    本篇文章将详细讲解如何在命令行中编译一个基于Java的Android项目,以"Notepad"为例,这个项目是Android SDK中的一个示例,位于`sdk\samples\android-8`目录下。 首先,你需要确保已经安装了Android SDK,并且环境...

    android外文资料

    如果你想要快速掌握如何在自己的应用中使用SQLite数据库,可以参考这个类,或者更建议查看SDK samples/目录下的完整Notepad应用,因为它使用了ContentProvider。 **步骤3**: 打开res/layout目录下的notepad_list....

    OpenGL Samples

    整理的一些OpenGL书籍中的例子,做了一个windows下的编译环境,制作成了bat的形式,以便在notepad++下可以编译。 这些代码取之于两本书籍:《OpenGL Superbible 5th》, 《OpenGL Programming Guide》

    windows 下在eclipse中安装android开发平台

    可以选择从现有源代码创建,浏览到%home A%/platforms/android-1.5/samples中的示例项目,例如Notepad。 7. **设置项目属性**:在项目上右键选择Properties,进入项目属性设置。在“Java Build Path”中添加JRE ...

    CodeSamples:来自个人项目和课程的代码示例

    代码示例 来自个人项目和课程的代码示例 课堂上的 Java 示例是使用 BlueJ 作为准系统 IDE 编写的... Lua 示例是使用 Notepad++ 和 Love2d 框架编写的 除非另有说明,所有代码均由 Mohsin Qureshi 编写。 推特:@MogeyQ

    存储大实验报告1

    但在尝试注入dll到notepad.exe时,遇到了问题,导致程序在后台运行但无图形界面显示。经过调试未果,作者转而学习Detours提供的samples。 作者深入研究了Detours.chm文档和samples中的工具,如`syelogd.exe`、`...

    Android SDK 目录和作用详解

    例如,对于 SQLite 数据库操作可以查看 NotePad 这个例子,对于游戏开发 Snake、LunarLander 都是不错的例子,对于 Android 主题开发 Home 则是 androidm5 时代的主题设计原理。 7、tools 目录 tools 目录作为 SDK...

    cadence 教程

    同时,可能需要根据个人环境修改其他设置,但必须保持文件格式不变,建议使用notepad编辑,避免格式问题。显示器需设置为256色。 2. **版图设置**: 在Cadence中,`display.drf`文件用于定义各层在屏幕上的显示方式...

    如何为BlackBerry手机开发应用软件

    对于“Hello World”应用,你可以使用Notepad或其他文本编辑器创建一个名为"HelloWorld.java"的文件。 - **导入BlackBerry特定的Java类**:BlackBerry应用基于Java 2 Mobile Edition (J2ME),因此可以使用J2ME的类...

    VB编程资源大全(英文源码 其它)

    6 , chunks.zip This will open a file and read it in "Chunks" of a selected file.<END><br>7 , logging.zip This is a bas that will log installation procedures so the file can be removed later....

    Cadence软件包及MEDICI使用

    如果从工作站上下载了`.cshrc`文件,可以使用Notepad对其进行编辑,调整显示设置。 - **配置cadence相关文件**:确保主目录下存在一些cadence的配置文件,例如在`cadenceX`目录中。这些配置文件用于指定工具的路径等...

Global site tag (gtag.js) - Google Analytics