Android教程網
  1. 首頁
  2. Android 技術
  3. Android 手機
  4. Android 系統教程
  5. Android 游戲
 Android教程網 >> Android技術 >> 關於Android編程 >> android開發關於sp共享數據存儲(記住賬號密碼儲存數據例子)

android開發關於sp共享數據存儲(記住賬號密碼儲存數據例子)

編輯:關於Android編程

本文內容過sp共享數據存儲實現記住賬號密碼功能

***************************************************************************************************************************

public class MainActivity extends Activity {

private AutoCompleteTextView completeTextView;
private EditText editText;
private SharedPreferences sp;
private CheckBox issaveBox;




@Override
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.activity_main);

//此方法在下面有具體的實現
findMyView();

}



//得到數據集合的方法
private List initNameData() {
List list = new ArrayList();

Map map = sp.getAll();
Set set = map.keySet();
//通過foreath遍歷
for (String name : set) {
if(!name.equals("name") && !name.equals("pwd") && !name.equals("issave")){
list.add(name);
}
}
return list;
}




private void findMyView() {
completeTextView = (AutoCompleteTextView) findViewById(R.id.text_autocomplete);
editText = (EditText) findViewById(R.id.text_edit);
issaveBox = (CheckBox) findViewById(R.id.checkbox_issave);
//獲得共享數據對象,共享數據對象只負責讀數據,寫數據由editor對象完成
//參數一:保存數據的文件名,不用加後綴,自動會生成usrmsg.xml文件,存在/data/data/包名/shared_prefs目錄下
//參數二:私有模式
sp = getSharedPreferences("userInfo", MODE_PRIVATE);

/*此XML文件即為通過SP存入手機內存中的XML文件,數據如下(總共存了兩個賬號,一個是記住密碼的zhangsan,123 另一個是不記住密碼的lisi,4567)
*


123
123
4567
zhangsan

*/


//讀取sp中的數據,設置給控件
//如果用戶選擇過記住, 加載用戶名密碼給控件
boolean isSave = sp.getBoolean("issave", false);
issaveBox.setChecked(isSave);
if (isSave) {
String uname = sp.getString("name", "");
completeTextView.setText(uname);

String upwd = sp.getString("pwd", "");
editText.setText(upwd);
}

List usernameList = initNameData();//此方法是得到數據集合,封裝在上面
ArrayAdapter adapter = new ArrayAdapter(this,
android.R.layout.simple_list_item_1,
usernameList);
completeTextView.setAdapter(adapter);

completeTextView.setOnItemClickListener(new OnItemClickListener() {


@Override
public void onItemClick(AdapterViewparent, View view,
int position, long id) {
//這裡不能用position來獲取數據,因為position當用戶輸入不同數據的時候篩選對應數據的position是不相同的
//參數二的view是當前被單擊的對象,用此對象來獲取數據
//因為前面給autoComplete控件設置布局用的是安卓系統自帶的布局文件,裡面含有的只有一個textView,故:
TextView textView = (TextView) view;
String name = textView.getText().toString();
//獲得用戶選擇的用戶名後,通過用戶名獲得相應的密碼並給其控件設置上值,實現記住賬號密碼功能
//getString方法,參數一是關鍵字,參數二是當搜尋不到的時候默認值填上
String pwd = sp.getString(name, "");
editText.setText(pwd);
}
});
}

public void login(View view){
String name = completeTextView.getText().toString();
String pwd = editText.getText().toString();

//當點擊確定按鈕時,需要寫入數據,這是寫數據由editor對象完成,
if(TextUtils.isEmpty(name) || TextUtils.isEmpty(pwd)){
//判斷輸入的數據是否為空,為空則稍作提示
Toast.makeText(this, "賬戶名或密碼不能為空", Toast.LENGTH_SHORT).show();
}else {
//當點擊確定按鈕時,需要寫入數據,這是寫數據由editor對象完成
Editor editor = sp.edit();
if(issaveBox.isChecked()){
//當用戶選擇記住賬戶密碼的時候,把選項(記住密碼)及帳號密碼分開存入sp文件中方便獲取
editor.putBoolean("issave", true);
editor.putString("name", name);
editor.putString("pwd", pwd);
}else {
editor.putBoolean("issave", false);
}
//當用戶沒有選擇記住賬戶密碼時,以用戶輸入的用戶名作為鍵,密碼作為值存入sp文件中,方便完成自動文本框
editor.putString(name, pwd);
//當數據存儲完後,必須提交,只有提交了數據才能真正的存入到sp文件當中
editor.commit();
}

}
}
  1. 上一頁:
  2. 下一頁:
熱門文章
閱讀排行版
Copyright © Android教程網 All Rights Reserved