码迷,mamicode.com
首页 > 其他好文 > 详细

数据存储(1)--键值对

时间:2016-05-06 12:55:33      阅读:164      评论:0      收藏:0      [点我收藏+]

标签:

SharedPreference

使用getSharedPreference(name,mode)或者这个SharedPreference,下面的例子,第一次显然是没有这个文件的。这个方法可以在
app中的任何Context调用,这个方法是属于某个Context的,就是需要有上下文,sunshine的工具类这个方法:
public static String getPreferredLocation(Context context) {
    SharedPreferences prefs = PreferenceManager.getDefaultSharedPreferences(context);
    return prefs.getString(context.getString(R.string.pref_location_key),
            context.getString(R.string.pref_location_default));
}
有点区别,应该是Preference的问题,一会讨论。
获得SharedPreference之后,读很简单,直接调用getString,getInt等方法,如果要写的话,需要获得一个SharedPreference.Edtior,可以通过
SharedPreference.edit()方法获得,接着调用Editor的putInt putString等方法写,最后要注意,一定要调用Editor.commit方法。这样数据就
提交了下面的完整的例子。
public class MainActivity extends AppCompatActivity {
    SharedPreferences preferences;
    SharedPreferences.Editor editor;
    public static final String PRE_TAG = "sy.com";
    public static final String KEY_TIME = "time";
    public static final String KEY_RANDOM = "random";

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

        preferences = getSharedPreferences(PRE_TAG, MODE_PRIVATE);
        editor = preferences.edit();
        Button read = (Button)findViewById(R.id.read);
        Button write = (Button)findViewById(R.id.write);
        read.setOnClickListener(new View.OnClickListener() {
            @Override
            public void onClick(View v) {
                String time = preferences.getString(KEY_TIME, null);
                int random = preferences.getInt(KEY_RANDOM, 0);
                String result = time == null ? "暂时未写入数据" : "上次写入时间" + time + "\n上次生成随机数" + random;
                Toast.makeText(getApplicationContext(), result, Toast.LENGTH_SHORT).show();
            }
        });
        write.setOnClickListener(new View.OnClickListener() {
            @Override
            public void onClick(View v) {
                SimpleDateFormat sdf = new SimpleDateFormat("yyyy年MM月dd日 hh:mm:ss");
                editor.putString(KEY_TIME, sdf.format(new Date()));
                editor.putInt(KEY_RANDOM,(int)(Math.random() * 100));
                editor.commit();
            }
        });
    }
}

Setting的Preference

Preference翻译出来就是偏好,设置用户的偏好。
不是用View对象设置用户界面,设置使用Preference的各种在XML文件中声明的子类。
一个Preference对象是一个单独设置的构造组件。每一个Preference展示为一个list的item,为用户提供设置。
我们添加的每一个Preference有一个相对应的键值对保存在一个默认的SharedPreference文件中,用户修改设置,
SharedPreference文件的内容也随之修改。我们不用管写,只需要在用的时候读就可以了。
因为不是用View构造的,所以展示这个设置页面需要一些特殊的子类,3.0之前的,继承PreferenceActivity,3.0之后
可以使用传统的Activity,持有一个PreferenceFragment对象。也可以使用PreferenceActivity创建一个两面的布局为大屏幕。

二者区别联系

每一个偏好的选项,一定要有一个Key,这个key指定了在SharedPreference文件中的key,用他来获取这个偏好选项的值,
安卓系统帮我们维护了这个偏好选项的更新,我们要做的就是读。

数据存储(1)--键值对

标签:

原文地址:http://blog.csdn.net/qingziguanjun1/article/details/51328781

(0)
(0)
   
举报
评论 一句话评论(0
登录后才能评论!
© 2014 mamicode.com 版权所有  联系我们:gaon5@hotmail.com
迷上了代码!