Android程序ToDoList增加配置项页面

简介:

本文要做的事情就是在前面做的简单的ToDoList程序上增加一个配置项页面(Reference)。这个Reference页面也非常简单:

Image Image(1)

这个ToDoList现在有两个页面,主页面能填写待办事项,然后manu键弹出可以跳转到Reference页面,在Reference页面只有一个checkbox,来给用户确认是否要本地保存(具体的本地存储的功能没有具体实现),Reference页面还有两个按钮,保存和返回。点击保存按钮,程序会存储用户是否已经选定了本地保存,点击返回按钮,页面会跳转到ToDoList页面。

在这个程序中主要是有几个地方需要处理

1 如何在两个Activity中进行切换

这是两个页面,所以我们首先会想到需要两个layout文件,于是我们创建了一个res/layout/preferences.xml,在这个layout中定义好了一个checkbox和两个按钮。现在的问题是当我点击main.xml中的manu按钮的时候,它是会触发onOptionsItemSelected事件的,所以我们需要在这个事件中触发reference页面。这个如何做呢?

大致是有两种方法:

1 在ToDoListActivity中调用setContentView来触发preferences.xml的展现。

2 重新创建一个Activity类Reference,ToDoListActivity中使用Intent触发Reference的启动,绘制等功能。

这两种方法有什么不同呢?

第一种方法相当于html中使用js来让不同的div的意思。它的好处就是简单,对于简单的逻辑和页面完全可以这么做。它的缺点也显而易见,等于是一个Activity控制多个layout,那么在代码层面,会是所有的逻辑都存放在一个类中,对于代码的易用性和维护性都是很大的损失。对于我们这个应用,我们选择第二种方法。

所以我们的onOptionsItemSelected事件代码如下:

1
2
3
4
5
6
7
8
9
public  boolean onOptionsItemSelected(MenuItem item) {
  switch  (item.getItemId()) {
  case  R.id.manu_reference:
        Intent intent = new  Intent();
        intent.setClass( this, Reference. class );
        startActivity(intent);
  }
  return  true;
}

当我在manu中触发的item是manu_reference(这个已经在配置中设置了id),那么我就启动我需要的Activity。

2 Intent和Activity

Android应用程序的三种核心的组件:Activity,Service, Brocast Receiver。这三种组件互相或者内部进行交互的消息就叫做Intent。比如在我们这个程序中,就是两个Activity需要进行交互,这个时候就需要使用到了Intent了。

Intent有三种用法:

传递给Activity:startActivity(Intent), startActivityForResult()

传递给Service:startService(Intent), bindService()

传递给Broadcast:sendBroadcast(), sendOrderedBroadcast(), sendStickyBroadcast()

在这个例子中,除了从ToDoListActivity跳到Reference,也有从Reference跳到ToDoListActivity(点击返回按钮)。

1
2
3
4
5
6
7
8
9
10
Button cancelReference = (Button)findViewById(R.id. cancel);
            cancelReference.setOnClickListener( new  View.OnClickListener() {
                 
                  @Override
                  public  void onClick(View v) {
                      Intent intent = new  Intent();
                  intent.setClass(Reference.this, ToDoListActivity. class );
                 startActivity( intent);
                 }
            });

3 配置项存储

关于配置项存储这里使用的是SharePreferences。SharePreferences提供了一个接口让你能存储和获取持久化的key-value数据。你可以持久化的数据类型有:boolean,float,int,long,string。

简单来说:

创建对象使用方法:

getSharePreferences()

getPreferences()

写数据使用方法:

1 使用edit()获取写句柄

2 调用putXXXX()方法

3 调用commit

读数据使用方法:

getXXX()

在这个例子中有这样用到:

1
2
3
4
5
6
7
8
final  SharedPreferences prefs = PreferenceManager.getDefaultSharedPreferences(context);
             boolean isSaveLocal = prefs.getBoolean( IS_SAVE_LOCAL, false);
 
...
 
Editor editor = prefs.edit();
                      editor.putBoolean( IS_SAVE_LOCAL, isChecked);
                      editor.commit();

总结

代码在https://github.com/jianfengye/Android_Works/tree/master/ToDoList

增加配置项也大都选择SharePreferences作为存储方法。至于Android还有其他的存储方法比如:

Internal Storage

External Storage

SQLite Databases

Network Connection

(参考http://developer.android.com/guide/topics/data/data-storage.html

应该在存储代办事项的时候用得到






本文转自轩脉刃博客园博客,原文链接:http://www.cnblogs.com/yjf512/p/3201504.html,如需转载请自行联系原作者

相关文章
|
1月前
|
Android开发
Android实现页面渐变效果
Android实现页面渐变效果
19 1
|
12天前
|
Linux Android开发
测试程序之提供ioctl函数应用操作GPIO适用于Linux/Android
测试程序之提供ioctl函数应用操作GPIO适用于Linux/Android
12 0
|
9月前
|
Android开发
Android 使用ViewPager实现手动左右切换页面和底部点点跟随切换效果
Android 使用ViewPager实现手动左右切换页面和底部点点跟随切换效果
138 0
|
7月前
|
存储 传感器 定位技术
《移动互联网技术》 第四章 移动应用开发: Android Studio开发环境的使用方法:建立工程,编写源程序,编译链接,安装模拟器,通过模拟器运行和调试程序
《移动互联网技术》 第四章 移动应用开发: Android Studio开发环境的使用方法:建立工程,编写源程序,编译链接,安装模拟器,通过模拟器运行和调试程序
83 0
|
7月前
|
Java Android开发 开发者
1024程序节|Android框架之一 BRVAH【BaseRecyclerViewAdapterHelper】使用demo
BRVAH是一个强大的RecyclerAdapter框架(什么是RecyclerView?),它能节约开发者大量的开发时间,集成了大部分列表常用需求解决方案。为什么会有它?请查看「Android开源框架BRVAH由来篇」该框架于2016年4月10号发布的第1个版本到现在已经一年多了,经历了800多次代码提交,140多次版本打包,修复了1000多个问题,获得了9000多star,非常感谢大家的使用以及反馈。
151 0
|
5月前
|
Android开发
UniApp Android 页面拖动,去掉半圆形阴影
UniApp Android 页面拖动,去掉半圆形阴影
50 0
|
12天前
|
Linux 测试技术 Android开发
测试程序之UART 232/485适用于Android/Linux
测试程序之UART 232/485适用于Android/Linux
21 0
|
1月前
|
XML Android开发 数据格式
Android注册登录页面2
Android注册登录页面
29 2
|
1月前
|
Java Android开发 数据安全/隐私保护
Android注册登录页面1
Android注册登录页面
10 1
|
5月前
|
XML Java Android开发
Android Studio App开发之实现简单的启动引导页ViewPager(附源码 实现App的欢迎页面)
Android Studio App开发之实现简单的启动引导页ViewPager(附源码 实现App的欢迎页面)
97 1