sharepreferences

来源:互联网 发布:mac os x镜像下载iso 编辑:程序博客网 时间:2024/06/06 20:37



1,sharepreferences在程序中创建一个xml
SharedPreferences myshareperferemces=getSharedPreferences("yuhan", Activity.MODE_PRIVATE);
//创建一个yuhan的xml,如果存在则直接引用,存在data->data->projactname->share_prefs中xml,模式加密本程序才能访问
SharedPreferences.Editor editor=myshareperferemces.edit();
//开始编辑xml
//put里边的值如果不存在,则创建,并且给一个默认值
editor.putBoolean("issuccessed", true);
editor.putFloat("float", (float) 1.5);
editor.putInt("int", 1);
editor.putLong("long", 1);
editor.putString("string", "string");
editor.apply();
//异步线程更新
boolean isyes=myshareperferemces.getBoolean("issuccessed", false);
int number=myshareperferemces.getInt("int", 0);
//从yuhan.xml中拿到对应的值,如果不存在,则得到默认值
Map<String,?> allPreferences=myshareperferemces.getAll();
Boolean containlastfloat=allPreferences.containsKey("lastfloat");
产生的yuhan.xml
<?xml version="1.0" encoding="UTF-8" standalone="true"?>


<map>


<boolean value="true" name="issuccessed"/>


<long value="1" name="long"/>


<float value="1.5" name="float"/>


<int value="1" name="int"/>


<string name="string">string</string>


</map>



2,
package com.example.hello;


import java.util.Map;


import android.app.Activity;
import android.content.Context;
import android.content.SharedPreferences;
import android.content.SharedPreferences.Editor;
import android.os.Bundle;
import android.preference.PreferenceManager;
import android.support.v7.appcompat.R.dimen;
import android.util.Log;
import android.view.View;
import android.widget.ArrayAdapter;
import android.widget.Button;
import android.widget.CheckBox;
import android.widget.Spinner;




public class MainActivity extends Activity {
CheckBox autoUpdate;//是否自动更新
Spinner updateFreSpinner;//更新频率
Spinner magnitudeSpinner;//更新时间间隔
SharedPreferences prefs;//得到sharepreferences
public static final String USER_PREFERENCE="USER_PREFERENCE";
public static final String PREF_AUTO_UPDATE="PREF_AUTO_UPDATE";
public static final String PREF_MIN_MAG_INDEX="PREF_MIN_MAG_INDEX";
public static final String PREF_UPDATE_FREQ_INDEX="PREF_UPDATE_FREQ_INDEX";
//这种写法将非常常用,应该要养成习惯,代表值应该要写在程序的上方,或者单独要一个文件夹来写
@Override
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.preferences);
updateFreSpinner=(Spinner) findViewById(R.id.spinner_update_freq);
magnitudeSpinner=(Spinner) findViewById(R.id.spinner_quake_mag);
autoUpdate=(CheckBox) findViewById(R.id.checkbox);
//初始化控件
populateSpinners();//将值放到下拉控件上
Context context=getApplicationContext();//得到当前context
prefs=PreferenceManager.getDefaultSharedPreferences(context);//得到context默认的sharepreferences
updateUIFromPreferences();
//初始化context中的键值对,并把defaultsharepreferences的值给spinner,等待以后选择,更新
Button okButton=(Button) findViewById(R.id.okButton);
//点击ok按钮,defaultsharepreferences就要更新键值对了
okButton.setOnClickListener(new View.OnClickListener() {

@Override
public void onClick(View v) {
// TODO Auto-generated method stub
savePreferences();//点击了ok,键值对的值要更新了
finish();
}


private void savePreferences() {
// TODO Auto-generated method stub
int updateIndex=updateFreSpinner.getSelectedItemPosition();
int minMagIndex=magnitudeSpinner.getSelectedItemPosition();
Boolean autoUpdateChecked=autoUpdate.isChecked();
Editor editor=prefs.edit();
editor.putBoolean(PREF_AUTO_UPDATE, autoUpdateChecked);
editor.putInt(PREF_UPDATE_FREQ_INDEX, updateIndex);
editor.putInt(PREF_MIN_MAG_INDEX, minMagIndex);
editor.commit();
}
});

}
private void updateUIFromPreferences() {
// TODO Auto-generated method stub
Boolean autoUpChecked=prefs.getBoolean(PREF_AUTO_UPDATE, false);
int updateFreqIndex=prefs.getInt(PREF_UPDATE_FREQ_INDEX, 2);
updateFreSpinner.setSelection(updateFreqIndex);
autoUpdate.setChecked(autoUpChecked);
}
private void populateSpinners() {
// TODO Auto-generated method stub
ArrayAdapter<CharSequence> fAdapter;
fAdapter=ArrayAdapter.createFromResource(this, R.array.update_freq_options, android.R.layout.simple_spinner_item);
int spinner_dd_item=android.R.layout.simple_spinner_dropdown_item;
fAdapter.setDropDownViewResource(spinner_dd_item);
updateFreSpinner.setAdapter(fAdapter);

ArrayAdapter<CharSequence> mAdapter;
mAdapter=ArrayAdapter.createFromResource(this, R.array.magnitude_options, android.R.layout.simple_spinner_item);
mAdapter.setDropDownViewResource(spinner_dd_item);
magnitudeSpinner.setAdapter(mAdapter);


}
}






arrays.xml


<?xml version="1.0" encoding="utf-8"?>
<resources>
    <string-array name="update_freq_options">
        <item >Every Minute</item>
        <item >5 minutes</item>
        <item >10 minutes</item>
        <item >15 minutes</item>
        <item >Every Hour</item>
    </string-array>
    <string-array name="magnitude">
        <item >3</item>
        <item >5</item>
        <item >6</item>
        <item >7</item>
        <item >8</item>
    </string-array>
    <string-array name="magnitude_options">
        <item >3</item>
        <item >5</item>
        <item >6</item>
        <item >7</item>
        <item >8</item>
    </string-array>
     <string-array name="update_freq_values">
        <item >1</item>
        <item >5</item>
        <item >10</item>
        <item >15</item>
        <item >60</item>
    </string-array>
    
</resources>
string.xml
<?xml version="1.0" encoding="utf-8"?>
<resources>
    <string name="app_name">hello</string>
    <string name="hello_world">Hello world!</string>
    <string name="action_settings">Settings</string>
<string name="menu_update"> Refresh Earthquakes</string>
<string name="auto_update_prompt">Auto Update?</string>
<string name="update_freq_prompt">Update Frequency</string>
<string name="min_quake_mag_prompt">Minimun Quake Magnitude</string>
<string name="menu_preferences">Preferences</string>
</resources>


preferences.xml


<?xml version="1.0" encoding="utf-8"?>
<LinearLayout xmlns:android="http://schemas.android.com/apk/res/android"
    android:layout_width="match_parent"
    android:layout_height="match_parent"
    android:orientation="vertical" >
    <TextView 
        android:layout_width="fill_parent"
        android:layout_height="wrap_content"
        android:text="@string/auto_update_prompt"/>
    <CheckBox 
        android:id="@+id/ckeckbox_auto_update"
        android:layout_width="fill_parent"
        android:layout_height="wrap_content"/>
<TextView 
   android:layout_width="fill_parent"
   android:layout_height="wrap_content"
   android:text="@string/update_freq_prompt"/>
<Spinner 
   android:id="@+id/spinner_update_freq"
   android:layout_width="fill_parent"
   android:layout_height="wrap_content"
   android:drawSelectorOnTop="true"/>
<TextView 
   android:layout_width="fill_parent"
   android:layout_height="wrap_content"
   android:text="@string/min_quake_mag_prompt"/>
<Spinner 
   android:id="@+id/spinner_quake_mag"
   android:layout_width="fill_parent"
   android:layout_height="wrap_content"
   android:drawSelectorOnTop="true"/>
<LinearLayout 
   android:orientation="horizontal"
   android:layout_width="fill_parent"
   android:layout_height="wrap_content">
   <Button 
       android:id="@+id/okButton"
       android:layout_width="wrap_content"
       android:layout_height="wrap_content"
       android:text="@android:string/ok"/>
   <Button 
       android:id="@+id/cannelButton"
       android:layout_width="wrap_content"
       android:layout_height="wrap_content"
       android:text="@android:string/cancel"/>
</LinearLayout>

</LinearLayout>



0 0