android小功能实现之简单数据持久化保存(SharedPreferences)

为了保存一些简单的配置,类似iOS的NSUserDefault和cocos2dx的CCUserDefault,Android提供了SharedPreferences。

一 布局

先看效果图:

打开main.xml修改内容如下:

<?xml version="1.0" encoding="utf-8"?>
<LinearLayout xmlns:android="http://schemas.android.com/apk/res/android"
    android:orientation="vertical"
    android:layout_width="fill_parent"
    android:layout_height="fill_parent">

    <TextView android:layout_width="fill_parent"
        android:layout_height="wrap_content"
        android:text="@string/input_name" />

    <EditText android:layout_width="fill_parent"
        android:layout_height="wrap_content"
        android:id="@+id/input_name" />

    <TextView android:layout_width="fill_parent"
        android:layout_height="wrap_content"
        android:text="@string/input_age" />

    <EditText android:layout_width="fill_parent"
        android:layout_height="wrap_content"
        android:numeric="integer"
        android:id="@+id/input_age" />

    <Button android:layout_width="wrap_content"
        android:layout_height="wrap_content"
        android:text="@string/button_save"
        android:onClick="save"
        android:id="@+id/button_save"/>
</LinearLayout>  

二 定义字符串

打开strings.xml添加内容如下:

    <string name="input_name">姓名</string>
    <string name="input_age">年龄</string>
    <string name="button_save">保存参数</string>
    <string name="success">保存成功</string>
    <string name="fail">保存失败</string>

三 功能实现

修改MainActivity.java代码如下:

    private EditText nameText;
    private EditText ageText;

    @Override
    protected void onCreate(Bundle savedInstanceState) {
        super.onCreate(savedInstanceState);
        setContentView(R.layout.activity_main);

        nameText = (EditText)this.findViewById(R.id.input_name);
        ageText = (EditText)this.findViewById(R.id.input_age);
        // 读取保存的值
        //SharedPreferences preferences = this.getPreferences(Context.MODE_PRIVATE);// 默认使用类名作为文件名称
        //SharedPreferences preferences = this.getSharedPreferences("preference", Context.MODE_PRIVATE);
        SharedPreferences preferences = getApplicationContext().getSharedPreferences("preference", Context.MODE_PRIVATE);
        String name = preferences.getString("name", "空");
        String age = String.valueOf(preferences.getInt("age", 0));
        nameText.setText(name);
        ageText.setText(age);
    }

    public void save(View v){
        String name = nameText.getText().toString();
        Integer age = Integer.valueOf( ageText.getText().toString() );
        try{
            // 第一个参数为文件名称,不能指定后缀名,第二个参数为文件操作模式
            SharedPreferences preferences = getApplicationContext().getSharedPreferences("preference", Context.MODE_PRIVATE);
            SharedPreferences.Editor editor = preferences.edit();
            editor.putString("name", name);
            editor.putInt("age", age);
            editor.commit();
            Toast.makeText(getApplicationContext(),R.string.success, Toast.LENGTH_LONG).show();
        }
        catch (Exception e){
            Toast.makeText(getApplicationContext(),R.string.fail, Toast.LENGTH_LONG).show();
            e.printStackTrace();
        }
    }

四 运行结果

第一次运行结果如图:

输入内容,点击保存参数按钮,退出程序,再次打开,如图:

时间: 2024-10-22 08:26:04

android小功能实现之简单数据持久化保存(SharedPreferences)的相关文章

Android开发学习---android下的数据持久化,保存数据到rom文件,android_data目录下文件访问的权限控制

一.需求 做一个类似QQ登录似的app,将数据写到ROM文件里,并对数据进行回显. 二.截图 登录界面: 文件浏览器,查看文件的保存路径:/data/data/com.amos.datasave/files/LoginTest.txt------/data/data/(包名)/files/(文件名) 导出的文件内容: 三.实现代码 新建一个Android 工程.这里我选择的是2.1即API 7,进行开发的,其它都是默认下一步下一步即可. /datasave/res/layout/activity

android小功能实现之SQLite数据库的基本操作

 创建一个Android工程 一 新建数据库 1 新建一个类DBOpenHelper 内容如下: import android.content.Context; import android.database.sqlite.SQLiteDatabase; import android.database.sqlite.SQLiteOpenHelper; public class DBOpenHelper extends SQLiteOpenHelper { public DBOpenHelpe

android小功能实现之xml文件解析(Pull)

android解析XML常见的有三种Pull.SAX.Dom三种方式. 最常使用是Pull,Android工程本身解析XML也是用的Pull. Pull是一个开源项目,其官方网站是:http://xmlpull.org/. 在Android工程中已经集成了Pull项目,可以直接使用. 新建一个Android工程. 一 添加测试文件 在res目录下新建一个raw文件夹,在其中添加文件persons.xml, 内容如下: <?xml version="1.0" encoding=&q

android小功能实现之文件读写

新建一个Android工程. 一 布局 先看效果图: 打开main.xml修改内容如下: <?xml version="1.0" encoding="utf-8"?> <LinearLayout xmlns:android="http://schemas.android.com/apk/res/android" android:orientation="vertical" android:layout_wid

android小功能实现之拨打电话

新建一个Android工程. 一 布局 打开main.xml修改内容如下: <TextView android:layout_width="fill_parent" android:layout_height="wrap_content" android:text="@string/mobile" /> <EditText android:layout_width="fill_parent" android:

Android小功能实现-sim卡读取,发短信,播放音乐

1.读取sim卡信息 private TelephonyManager tm; tm = (TelephonyManager) getSystemService(TELEPHONY_SERVICE); String sim = tm.getSimSerialNumber(); 需要TelephonyManager 加权限 <uses-permission android:name="android.permission.READ_PHONE_STATE"/> 2.发短信 S

Android -- 小功能 仿美图秀秀(美颜相机)马赛克功能

前言: 之前公司有需求,需要对图片进行编辑,功能参照美图秀秀(或者美颜相机)的功能(带手指触动预览图功能.带放大缩小实施涂鸦功能),上网找了一堆源码,发现没有类似的,只能自己写 实现思路: 见源码,下载地址:点击打开链接 截图:

Android小功能之垂直滚动条

1 <?xml version="1.0" encoding="utf-8"?> 2 <ScrollView 3 xmlns:android="http://schemas.android.com/apk/res/android" 4 android:layout_width="fill_parent" 5 android:layout_height="fill_parent" 6 and

android小功能实现之发送短信

新建一个Android工程. 一 布局 打开main.xml修改内容如下: <TextView android:layout_width="fill_parent" android:layout_height="wrap_content" android:text="@string/number" /> <EditText android:layout_width="fill_parent" android: