当前位置: 代码迷 >> Android >> Android入门(五) SharedPreferences
  详细解决方案

Android入门(五) SharedPreferences

热度:75   发布时间:2016-05-01 12:21:45.0
Android入门(5) SharedPreferences

5.2.1 需求分析效果图


5.2.2 设计思路与步骤

1. 首先布局,不多说。三个TextView、三个EditText、一个Button搞定。各id不用,三个EditText必须用id,而按钮在main.xml中要注册个onClick事件即可。

2. 关键是如何让应用程序一开始就可以显示上次,保存成功的设置的值呢?如何又将本次修改设置的新值保存起来呢?显然需求个SharedPerferences对象,而此对象肯定也是与手机应用文件相关(实际文件是存放在/data/data/包名/shared_prefs文件夹下),那么可以通过Context对象的getSharedPerferences(文件名,应用MODE模式)获取SharedPerferences对象

3. 有了此对象后,那么我们可以在activity类的onCreate方法中,将各控件中的值设置为从sp.getString(key)中读取的值。那么还有个问题是如何保存本次修改的值。

4. 通过按钮中注册的onClick方法,将分别以上三个EditText中的值,将用sp.getEditor获取的Editor对象editoreditor.putString(key,value),最后再用editor.commit下就Ok

4.1 在程序中保存一些配置参数的时候我们经常使用SharedPreferences

Context.getSharedPreferences(String name,int mode)

该方法可以在/data/data/<package>/shared_pref/目录下创建一个以name命名的xml文件,mode文件为模式

4.2 存储偏好

调用edit()方法可以获取一个Editor对象,对数据进行存储,存储之后需要调用commit()保存到文件

4.3读取偏好

获得SharedPreferences之后调用getString()getInt()等方法获取其中设置的值

4.4在Activity中获取SharedPreferences

Activity中可以调用getPreferences(int mode)方法获得一个SharedPreferences,文件名和Activity名一致

5.2.3 SharedPerferences的示例代码

package com.test.sharedperferences;

import android.app.Activity;

import android.content.Context;

import android.content.SharedPreferences;

import android.content.SharedPreferences.Editor;

import android.os.Bundle;

import android.view.View;

import android.widget.EditText;

import android.widget.Toast;

public class MainActivity extends Activity {

    private EditText nameET;

private EditText phoneET;

private EditText emailET;

private SharedPreferences sp;

    @Override

    public void onCreate(Bundle savedInstanceState) {

        super.onCreate(savedInstanceState);

        setContentView(R.layout.main);

        sp = getSharedPreferences("qq", Context.MODE_PRIVATE);

        

        nameET = (EditText)findViewById(R.id.name);

        phoneET = (EditText)findViewById(R.id.phone);

        emailET = (EditText) findViewById(R.id.email);

        

        //一开启一个Activity就把SharedPerferences中的内容读取出来,放入到相应的位置中去。

        nameET.setText(sp.getString("name"""));

        phoneET.setText(sp.getString("phone"""));

        emailET.setText(sp.getString("email"""));

    }

    

    /**

     * 每次点击时,将内容获取出来并保存到SharedPerferences中去。

     * @param view

     */

    public void onClick(View view){

     try {

String name = nameET.getText().toString();

String phone = phoneET.getText().toString();

String email = emailET.getText().toString();

//保存起来需要先获取Editor对象。

Editor editor = sp.edit();

editor.putString("name", name);

editor.putString("phone", phone);

editor.putString("email", email);

editor.commit(); //存放后,需要提交。

Toast.makeText(this"保存成功", 0).show();

catch (Exception e) {

Toast.makeText(this"保存失败", Toast.LENGTH_SHORT).show();

e.printStackTrace();

}

    

    }

    

}

  相关解决方案