首先要获取SharedPreferences的对象,这里主要有三种方法:
1.Content类中的getSharedPreferences()方法 第一个参数指定文件名称,第二个指定操作模式,目前只有MODE_PRIVATE这一种类模式可选,这是默认的操作模式,和直接传入0的效果相同,表示是有当前应用能对该文件进行读写,至于其他的操作模式都被废弃了。
2.Activity类中的getPreferences()方法 和getSharedPreferences()相似,不过它直接收一个操作模式参数,因为使用这个方法的时候,它默认将包名自动当作文件的名字。
3.PreferenceManager类中的getDefaultShardPreference()方法 这是一个静态方法,它接收一个Context参数,并自动使用当前应用程序的包名来命名SharedPreferences文件。
得到对象后,就可以开始传递参数了。(1)调用SharedPreferences对象的edit()方法来获取一个SharedPreferences.Editor对象。
(2)向SharedPreferences.Editor对象中添加数据,比如putString()。
(3)调用apply()方法将数据提交,从而完成数据操作。
MainActivity:
public class MainActivity extends AppCompatActivity {
@Override
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.activity_main);
Button saveDate = (Button)findViewById(R.id.save_data);
saveDate.setOnClickListener(new View.OnClickListener() {
@Override
public void onClick(View v) {
SharedPreferences.Editor editor = getSharedPreferences("data",MODE_PRIVATE).edit();
editor.putString("name","Tom");
editor.putInt("age",18);
editor.putBoolean("married",false);
editor.apply();
}
});
}
}
activity_main:
<android.support.constraint.ConstraintLayout
xmlns:android="http://schemas.android.com/apk/res/android"
xmlns:app="http://schemas.android.com/apk/res-auto"
xmlns:tools="http://schemas.android.com/tools"
android:layout_width="match_parent"
android:layout_height="match_parent"
tools:context="com.example.eason.sharedpreference.MainActivity">
<Button
android:id="@+id/save_data"
android:layout_width="match_parent"
android:layout_height="wrap_content"
android:text="save data"/>
</android.support.constraint.ConstraintLayout>
运行点击按钮;
打开ADM 点击File Explorer
进入datd/
将data.xml导出,
打开文件,
接下来 来获取数据:
修改activity_main:
<android.support.constraint.ConstraintLayout
xmlns:android="http://schemas.android.com/apk/res/android"
xmlns:app="http://schemas.android.com/apk/res-auto"
xmlns:tools="http://schemas.android.com/tools"
android:layout_width="match_parent"
android:layout_height="match_parent"
tools:context="com.example.eason.sharedpreference.MainActivity">
<Button
android:id="@+id/save_data"
android:layout_width="368dp"
android:layout_height="wrap_content"
android:text="save data"
tools:layout_editor_absoluteY="4dp"
tools:layout_editor_absoluteX="8dp"/>
<Button
android:id="@+id/restore_data"
android:text="Restore data "
android:layout_width="368dp"
android:layout_height="wrap_content"
tools:layout_editor_absoluteX="8dp"
android:layout_marginTop="47dp"
app:layout_constraintTop_toBottomOf="@+id/save_data"
/>
</android.support.constraint.ConstraintLayout>
在MainActivity添加:
Button restoreData = (Button)findViewById(R.id.restore_data);
restoreData.setOnClickListener(new View.OnClickListener() {
@Override
public void onClick(View v) {
SharedPreferences preferences = getSharedPreferences("data",MODE_PRIVATE);
String name = preferences.getString("name","");
int age = preferences.getInt("age",0);
boolean married = preferences.getBoolean("married",false);
Log.e("Main", "onClick: "+name );
Log.e("Main", "onClick: "+age );
Log.e("Main", "onClick: "+married );
}
});
}
效果图: 点击按钮这样就读取到了数据
继续,解下来使用PreferenceManager.getDefaultSharedPreferences()来储存获取数据。
修改MainActivity:
ublic class MainActivity extends AppCompatActivity {
private SharedPreferences preferences;
private SharedPreferences.Editor editor;
@Override
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.activity_main);
preferences = PreferenceManager.getDefaultSharedPreferences(this);//修改
Button saveDate = (Button)findViewById(R.id.save_data);
saveDate.setOnClickListener(new View.OnClickListener() {
@Override
public void onClick(View v) {
editor = preferences.edit();
editor.putString("name","Tom");
editor.putInt("age",18);
editor.putBoolean("married",false);
editor.apply();
}
});
Button restoreData = (Button)findViewById(R.id.restore_data);
restoreData.setOnClickListener(new View.OnClickListener() {
@Override
public void onClick(View v) {
String name = preferences.getString("name","");
int age = preferences.getInt("age",0);
boolean married = preferences.getBoolean("married",false);
Log.e("Main", "onClick: "+name );
Log.e("Main", "onClick: "+age );
Log.e("Main", "onClick: "+married );
}
});
}
}
同样的效果: