-
Xml文件,K-V形式(键值形式)
-
SharedPreferences(读)
-
SharedPreferences.Editor(写)
尖括号里的是值,但不是包名,一般默认是包名
存的数据放在/data/data//shared_prefs
正常看不到这个目录,得root权限
package com.example.myapplication.datastorage;
import androidx.appcompat.app.AppCompatActivity;
import android.content.Context;
import android.content.SharedPreferences;
import android.os.Bundle;
import android.view.View;
import android.widget.Button;
import android.widget.EditText;
import android.widget.TextView;
import com.example.myapplication.R;
public class SharedPreferencesActivity extends AppCompatActivity {
private EditText mEtName;
private Button mBtnSave,mBtnShow;
private TextView mTvContent;
private SharedPreferences mSharedPreferences;
private SharedPreferences.Editor mEditor;
@Override
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.activity_shared_preferences);
mEtName = findViewById(R.id.et_name);
mBtnSave = findViewById(R.id.btn_save);
mBtnShow = findViewById(R.id.btn_show);
mTvContent = findViewById(R.id.tv_content_show);
//第一个参数是随便写的,第二个参数我们一般使用这个,表示这条数据只能被本应用读写
mSharedPreferences = getSharedPreferences("data",MODE_PRIVATE);
mEditor = mSharedPreferences.edit();
mBtnSave.setOnClickListener(new View.OnClickListener() {
@Override
public void onClick(View v) {
mEditor.putString("name",mEtName.getText().toString());
//mEditor.putInt("name",666);
/*
在这里commit()已经被AndroidStudio标黄了,并提示你用apply方法代替
在99%的情况下,apply和commit是可以相互使用的
只不过commit是同步存储的过程,存完之后才干其他事
apply会优先修改内存,对磁盘的存储是异步存储,在内存上都是即使生效的
!优先使用apply!
*/
mEditor.apply();
}
});
mBtnShow.setOnClickListener(new View.OnClickListener() {
@Override
public void onClick(View v) {
mTvContent.setText(mSharedPreferences.getString("name",""));
}
});
}
}
布局文件
<?xml version="1.0" encoding="utf-8"?>
<LinearLayout xmlns:android="http://schemas.android.com/apk/res/android"
android:padding="15dp"
android:orientation="vertical"
android:layout_width="match_parent"
android:layout_height="match_parent"
>
<EditText
android:layout_width="match_parent"
android:layout_height="wrap_content"
android:id="@+id/et_name"
android:hint="输入内容"/>
<Button
android:layout_width="match_parent"
android:layout_height="wrap_content"
android:id="@+id/btn_save"
android:text="保存"
android:layout_marginTop="10dp"/>
<Button
android:layout_width="match_parent"
android:layout_height="wrap_content"
android:id="@+id/btn_show"
android:text="显示"
android:layout_marginTop="10dp"/>
<TextView
android:layout_width="match_parent"
android:layout_height="wrap_content"
android:layout_marginTop="10dp"
android:id="@+id/tv_content_show"/>
</LinearLayout>