SharedPreferenced是使用键值对的方式来存储数据。保存一条数据时,需要给这条数据一个对应的键,这样在读取数据的时候就可以通过这个键把相应的值取出来。存的是整形取出还是整形。存入字符串取出仍然是字符串。
一、把数据存到SharedPreferenced中去
1、Context类重的getSharedPreferenced()方法接收两个参数第一个是文件名称,第二个是指定操作模式
2、Activity类中的getPreferences()方法与上一个类似,但是这种方法会将当时活动的类名作为SharedPreferenced的文件名
3、PreferenceManager类中的getDefaultSharedPreferences()方法这是一个静态方法,接收一个Context参数,并自动使用当前应用程序的包名作为前缀来命名SharedPreferenced文件。得到SharedPreferenced对象后就可以开始向SharedPreferenced文件中存储数据了,过程分为三步
(1)调用SharedPreferenced对象中的edit()方法,获取一个SharedPreferenced.Editor对象
(2)向SharedPreferenced.Editor对象中添加数据,添加XXX类型数据就是putXXX,eg:putString,putBoolean
(3)调用apply()方法将添加的数据提交,完成数据存储操作
public class MainActivity extends AppCompatActivity { @Override protected void onCreate(Bundle savedInstanceState) { super.onCreate(savedInstanceState); setContentView(R.layout.activity_main); Button saveData = findViewById(R.id.save_data);//存储数据 saveData.setOnClickListener(new View.OnClickListener() { @Override public void onClick(View v) { SharedPreferences.Editor editor = getSharedPreferences("data",MODE_PRIVATE).edit(); editor.putString("name","wangkangli"); editor.putInt("age",18); editor.putBoolean("marry",false); editor.apply(); } }); Button restoreData = findViewById(R.id.restore_data);//读取数据 restoreData.setOnClickListener(new View.OnClickListener() { @Override public void onClick(View v) { SharedPreferences pref = getSharedPreferences("data",MODE_PRIVATE); String name = pref.getString("name",""); int age = pref.getInt("age",0); boolean marry = pref.getBoolean("marry",false); Toast.makeText(MainActivity.this,"姓名:"+name+"年龄:"+age,Toast.LENGTH_SHORT).show(); } }); } }
<LinearLayout xmlns:android="http://schemas.android.com/apk/res/android" android:layout_width="match_parent" android:layout_height="match_parent" android:orientation="vertical"> <Button android:id="@+id/save_data" android:layout_width="match_parent" android:layout_height="wrap_content" android:text="save data"/> <Button android:id="@+id/restore_data" android:layout_width="match_parent" android:layout_height="wrap_content" android:text="restore data"/> </LinearLayout>