走进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 ); } }); }}
同样的效果:
- 走进SharedPreferences
- SharedPreferences
- SharedPreferences
- SharedPreferences
- SharedPreferences
- SharedPreferences
- SharedPreferences
- SharedPreferences
- SharedPreferences
- SharedPreferences
- SharedPreferences
- SharedPreferences
- SharedPreferences
- SharedPreferences
- SharedPreferences
- SharedPreferences
- SharedPreferences
- SharedPreferences
- VR系列——Oculus Rift 开发者指南:三、Oculus Rift的渲染(四)
- 11--MySQL数据查询应用(实战)(二)
- Spring之事务管理理解
- Java中,重载和重写是否是多态?
- Redis1
- 走进SharedPreferences
- SQL Server2005管道的另一端上无任何进程——解决方案
- 无法在JDK源码中设置断点---- unable to install breakpoint in ....due to missing line number attributes
- foreach和&共用出现的问题
- HeidiSQL中文乱码解决
- 登录功能
- 直接拿来用!十大Material Design开源项目
- 16位汇编指令
- 层次遍历构建二叉树