走进SharedPreferences

来源:互联网 发布:小米云服务软件 编辑:程序博客网 时间:2024/06/06 00:08

首先要获取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 );            }        });    }}



同样的效果:

这里写图片描述

原创粉丝点击