【Android】SharedPreference使用

SharedPreference是Android中用于轻量级数据存储的类,主要保存简单类型key-value对,适用于配置信息存储。数据以xml文件形式存储在/data/data/<package name>/shared_prefs目录下。使用时,通过调用getSharedPreferences()获取实例,然后使用edit()得到Editor对象进行数据修改,最后通过commit()提交。访问数据时,使用getString()和getInt()等方法,若key不存在则返回默认值。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

SharedPreference保存的数据主要是类似于配置信息格式的数据,是一个轻量级存储类。保存的数据主要是简单类型的key-value对。

SharedPreference接口本身并没有写入数据的能力,而是通过SharedPreference的内部接口,调用edit()方法可获取它所对应的Editor对象。

使用SharedPreferences保存数据,其背后是用xml文件存放数据,文件存放在/data/data/<package name>/shared_prefs目录下

SharedPreferences sharedPreferences = getSharedPreferences("yy", Context.MODE_PRIVATE);

Editor editor = sharedPreferences.edit();//获取编辑器

editor.putString("name", "小白");

editor.putInt("age", 24);

editor.commit();//提交修改

访问SharedPreferences中的数据代码如下:

SharedPreferences sharedPreferences = getSharedPreferences("yy", Context.MODE_PRIVATE);

//getString()第二个参数为缺省值,如果preference中不存在该key,将返回缺省值

String name = sharedPreferences.getString("name", "");

int age = sharedPreferences.getInt("age", 1);

示例如下:

public class MainActivity extends Activity {
    Button write,read,save,show;
    TextView nameView,ageView,result;
    EditText nameEdit,ageEdit;
    SharedPreferences preferences, pref;
    SharedPreferences.Editor editor, editor2;
    @Override
    protected void onCreate(Bundle savedInstanceState) {
        super.onCreate(savedInstanceState);
        setContentView(R.layout.activity_main);

        write = (Button)findViewById(R.id.write);
        read = (Button)findViewById(R.id.read);
        save = (Button)findViewById(R.id.save);
        show = (Button)findViewById(R.id.show);
        nameEdit = (EditText) findViewById(R.id.nameText);
        ageEdit = (EditText) findViewById(R.id.ageText);
        nameView = (TextView)findViewById(R.id.name);
        ageView = (TextView)findViewById(R.id.age);
        result = (TextView)findViewById(R.id.contentText);
        
        //获取只能被本应用程序读、写的SharedPreference对象
        preferences = getSharedPreferences("mine", MODE_PRIVATE); //min为文件名
        editor = preferences.edit();
      
        pref = getSharedPreferences("info", MODE_PRIVATE);
        editor2 = pref.edit();

        save.setOnClickListener(new View.OnClickListener() {
            @Override
            public void onClick(View v) {
                String name  = nameEdit.getText().toString();
                int age = Integer.parseInt(ageEdit.getText().toString());
                editor2.putString("name",name);
                editor2.putInt("age",age);
                editor2.commit();
            }
        });
        show.setOnClickListener(new View.OnClickListener() {
            @Override
            public void onClick(View v) {
                String str = pref.getString("name", "");
                int ageNum = pref.getInt("age", 1);
                //String result = "姓名:" + str + ", 年龄:" + ageNum;
                result.setText("姓名:" + str + ", 年龄:" + ageNum);
            }
        });
        write.setOnClickListener(new View.OnClickListener() {
            @Override
            public void onClick(View v) {
                SimpleDateFormat sdf = new SimpleDateFormat("yyyy年MM月dd日" + "hh:mm:ss");
                //存入数据
                editor.putString("time",sdf.format(new Date()));
                editor.putInt("random",(int)(Math.random()* 100));
                editor.commit(); //提交所存入的数据
            }
        });
        read.setOnClickListener(new View.OnClickListener() {
            @Override
            public void onClick(View v) {
                String time = preferences.getString("time",null);
                int randNum = preferences.getInt("random", 0);
                String result = time==null?"您暂时还未写入时间":"写入时间:" + time + "\n上次生成的随机数:" + randNum;
                Toast.makeText(MainActivity.this, result,Toast.LENGTH_LONG).show();
            }
        });
    }
}

运行结果:





评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值