PreferenceActivity通常用在设置界面,用于保存设置的状态数据。在网上看到一篇文章总结得很好,这里就不再总结了。
http://www.cnblogs.com/wservices/archive/2010/07/08/1773449.html
http://www.cnblogs.com/keyindex/articles/1814506.html
下面,我自己编写了一个例子用于加深对SharedPreferences的理解。通常使用这个类来保持用户输入的数据,希望程序再次启动的时候,还能够得到用户上次输入的数据。废话少说,看代码:
通过以下的例子也学习了如何使用Spinner(下拉菜单)
package kaven.org;
import android.app.Activity;
import android.content.SharedPreferences;
import android.os.Bundle;
import android.view.View;
import android.view.View.OnClickListener;
import android.widget.ArrayAdapter;
import android.widget.Button;
import android.widget.EditText;
import android.widget.Spinner;
import android.widget.TextView;
public class PreferenceTestActivity extends Activity {
private final String NAME = "username" ;
private final String POSITION = "position";
private Button saveButton = null;
private Button removeButton = null;
private int countryPosition = 0;
/** Called when the activity is first created. */
@Override
public void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.main);
initializeUI();//初始化UI
saveButton = (Button)findViewById(R.id.button1);
removeButton = (Button)findViewById(R.id.button2);
saveButton.setOnClickListener(new OnClickListener() {
@Override
public void onClick(View v) {
// TODO Auto-generated method stub
saveData();
}
});
removeButton.setOnClickListener(new OnClickListener() {
@Override
public void onClick(View v) {
// TODO Auto-generated method stub
removeData();
}
});
}
public void initializeUI(){
TextView text = (TextView)findViewById(R.id.editText1);
Spinner spinner = (Spinner)findViewById(R.id.spinner_1);
SharedPreferences pre = getPreferences(MODE_PRIVATE);
text.setText(pre.getString(NAME, "Kaven")); //初始化编辑框显示
ArrayAdapter<CharSequence> adapter = ArrayAdapter.createFromResource(this, R.array.country, android.R.layout.simple_spinner_item);
adapter.setDropDownViewResource(android.R.layout.simple_spinner_dropdown_item);
spinner.setAdapter(adapter);
spinner.setSelection(pre.getInt(POSITION, 0)); //设置初始化下拉菜单的显示内容
}
public void saveData(){
SharedPreferences.Editor editor = getPreferences(MODE_PRIVATE).edit();
EditText text = (EditText)findViewById(R.id.editText1);
editor.putString(NAME, text.getText().toString());
Spinner spinner = (Spinner)findViewById(R.id.spinner_1);
countryPosition = spinner.getSelectedItemPosition();//获得所选Item的Position
editor.putInt(POSITION, countryPosition);
editor.commit();
}
public void removeData(){
SharedPreferences.Editor editor = getPreferences(MODE_PRIVATE).edit();
//移除指定的数据
//editor.remove(NAME);
//移除Preference里的所有数据
editor.clear();
//修改数据之后,记得调用这个方法保存数据
editor.commit();
initializeUI();//还原默认值
}
}
array.xml文件:
<resources> <string-array name="country"> <item>China</item> <item >American</item> <item >England</item> </string-array> </resources>
程序启动的时候,调用initializeUI(),用于初始化所有用户需要输入的内容,getString(NAME,“Kaven”),当SharedPreferences里存有数据的时候,则取出保存的数据,如果没有则显示“Kaven”。getInt("position", 0),存有相应的数据时,则取出position对应的值,否则为0.
点击保存,保存当前编辑框和下拉菜单的数据。点击清除,则清除所有保持在SharedPreferences中的数据,因为这里使用的是clear(),如果使用remove(),则按意愿逐个清除保存的数据。