首页 > 代码库 > SharedPreferences in Android
SharedPreferences in Android
As far as I know, SharedPreferences allow us to store some simple data in a named area in our phone. Introduction to the uses of SharedPreferences is very clear at Android SDK website. I just copied here(I divided the contents into four parts):
Introduction
The SharedPreferences
class provides a general framework that allows you to save and retrieve persistent key-value pairs of primitive data types. You can use SharedPreferences
to save any primitive data: booleans, floats, ints, longs, and strings. This data will persist across user sessions (even if your application is killed).
Get SharedPreferences object
To get a SharedPreferences
object for your application, use one of two methods:
getSharedPreferences()
- Use this if you need multiple preferences files identified by name, which you specify with the first parameter.getPreferences()
- Use this if you need only one preferences file for your Activity. Because this will be the only preferences file for your Activity, you don‘t supply a name.
Write the values
To write values:
- Call
edit()
to get aSharedPreferences.Editor
. - Add values with methods such as
putBoolean()
andputString()
. - Commit the new values with
commit()
Read the values
To read values, use SharedPreferences
methods such as getBoolean()
and getString()
.
_______________________________________________________________________________________________________________________
Now let‘s get into example time:
First, take a look at AndroidManifest.xml file to get to know it.
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 | <!-- part of AndroidManifest.xml --> <application android:allowBackup= "true" android:icon= "@drawable/ic_launcher" android:label= "@string/app_name" android:theme= "@style/AppTheme" > <activity android:name= "com.example.sharedpreferences.MainActivity" android:label= "@string/app_name" > <intent-filter> <action android:name= "android.intent.action.MAIN" /> <category android:name= "android.intent.category.LAUNCHER" /> </intent-filter> </activity> <activity android:name= "com.example.sharedpreferences.Display" android:label= "Display" > </activity> </application> |
Two Activities exist in this example,
MainActivity.java which uses activity_main.xml as the content view;
Display.java which uses main.xml as the content view:
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 | <span style= "color: rgb(153, 204, 0);" ><strong> //MainActivity.java</strong></span><br>public class MainActivity extends Activity { private static final String MY_PREF= "firstpreferencefile" ; private Button change; private EditText ed1; private EditText ed2; private SharedPreferences sp; @Override protected void onCreate(Bundle savedInstanceState) { // TODO Auto-generated method stub super .onCreate(savedInstanceState); setContentView(R.layout.activity_main); change=(Button)findViewById(R.id.change); ed1=(EditText)findViewById(R.id.editText1); ed2=(EditText)findViewById(R.id.editText2); sp=getSharedPreferences(MY_PREF, 0 ); System.out.println( "hello" +sp.getString( "name" , "null" )); change.setOnClickListener( new View.OnClickListener() { @Override public void onClick(View v) { // TODO Auto-generated method stub Editor editor=sp.edit(); editor.putString( "name" , ed1.getText().toString()); editor.putString( "email" , ed2.getText().toString()); editor.commit(); Intent intent= new Intent(getApplicationContext(),Display. class ); startActivity(intent); } }); } } |
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 | <span style= "color: rgb(153, 204, 0);" ><strong> //Display.java</strong></span> public class Display extends Activity { private static final String MY_PREF= "firstpreferencefile" ; private TextView tv1; private TextView tv2; @Override protected void onCreate(Bundle savedInstanceState) { // TODO Auto-generated method stub super .onCreate(savedInstanceState); setContentView(R.layout.main); SharedPreferences sp=getSharedPreferences(MY_PREF, 0 ); tv1=(TextView)findViewById(R.id.textView1); tv2=(TextView)findViewById(R.id.textView2); tv1.setText(sp.getString( "name" , "song" )); tv2.setText(sp.getString( "email" , "jies.2408@gmail.com" )); } } |
We set up two values and store them in SharedPreferences object. These two values can be changed in MainActivity.java, and would be displayed in main.java.