Ver 1.0 – 2016, FIT - HCMUP<br />
<br />
Lab 07: Data Storage<br />
<br />
1 Thao tác dữ liệu với SharedPreferences<br />
SharedPreferences dùng để lưu trạng thái của ứng dụng, dạng file xml. Lớp<br />
SharedPreferences cung cấp một framework giúp bạn có thể lưu trữ và đọc lên<br />
những cặp key-value liên tục dữ liệu đơn giản. Có thể dùng SharedPreferences với<br />
những kiểu dữ liệu như: booleans, floats, ints, longs, strings.<br />
1.1<br />
<br />
Thao tác đọc/ghi<br />
<br />
1.1.1 Ghi dữ liệu<br />
<br />
//Tạo đối tượng SharedPreferences<br />
SharedPreferences sp = getSharedPreferences(fileName, MODE_PRIVATE);<br />
SharedPreferences.Editor editor = sp.edit();<br />
//Lưu dữ liệu<br />
editor.putX(key, value); //X là kiểu dữ liệu<br />
//Ví dụ kiểu string<br />
editor.putString(“ten”,”kylh”);<br />
//Hoàn thành<br />
editor.commit();<br />
1.1.2 Đọc dữ liệu<br />
<br />
//Tạo đối tượng SharedPreferences<br />
SharedPreferences sp = getSharedPreferences(fileName, MODE_PRIVATE);<br />
//Đọc dữ liệu<br />
sp.getX(key, default); //X là kiểu dữ liệu<br />
//Ví dụ kiểu string<br />
String t = sp.getString(“ten”, “”);<br />
<br />
Ths. Lương Trần Hy Hiến, KHOA CNTT – TRƯỜNG ĐH SƯ PHẠM TP. HCM<br />
<br />
1<br />
<br />
Ver 1.0 – 2016, FIT - HCMUP<br />
<br />
1.2<br />
<br />
Thiết kế giao diện<br />
<br />
1.3<br />
<br />
Lab 07: Data Storage<br />
<br />
Xử lý code đọc/ghi<br />
<br />
Nếu người dùng check chọn ghi nhớ:<br />
<br />
Tiến hành kiểm tra đăng nhập thành công (nếu có), lưu thông tin và mở màn hình<br />
(Activity) cá nhân.<br />
<br />
Ths. Lương Trần Hy Hiến, KHOA CNTT – TRƯỜNG ĐH SƯ PHẠM TP. HCM<br />
<br />
2<br />
<br />
Ver 1.0 – 2016, FIT - HCMUP<br />
<br />
Lab 07: Data Storage<br />
<br />
private void restoringPreferences() {<br />
SharedPreferences pre = this.getSharedPreferences(prefname,<br />
Context.MODE_PRIVATE);<br />
if(pre != null) {<br />
//lấy giá trị checked ra, nếu không thấy thì giá trị mặc định là false<br />
boolean bchk = pre.getBoolean("checked", false);<br />
if (bchk) {<br />
//lấy user, pwd, nếu không thấy giá trị mặc định là rỗng<br />
String user = pre.getString("user", "admin");<br />
String pwd = pre.getString("pwd", "123");<br />
txtUser.setText(user);<br />
txtPass.setText(pwd);<br />
}<br />
chkGhiNho.setChecked(bchk);<br />
}<br />
}<br />
private void savingPreferences(){<br />
//tạo đối tượng getSharedPreferences<br />
SharedPreferences pre = this.getSharedPreferences(prefname,<br />
Context.MODE_PRIVATE);<br />
//tạo đối tượng Editor để lưu thay đổi<br />
SharedPreferences.Editor editor = pre.edit();<br />
//Lưu trữ dữ liệu dạng key/value<br />
String user = txtUser.getText().toString();<br />
String pwd = txtPass.getText().toString();<br />
boolean bchk = chkGhiNho.isChecked();<br />
if(!bchk)<br />
{<br />
//xóa mọi lưu trữ trước đó<br />
editor.clear();<br />
}<br />
Ths. Lương Trần Hy Hiến, KHOA CNTT – TRƯỜNG ĐH SƯ PHẠM TP. HCM<br />
<br />
3<br />
<br />
Ver 1.0 – 2016, FIT - HCMUP<br />
<br />
Lab 07: Data Storage<br />
<br />
else<br />
{<br />
//lưu vào editor<br />
editor.putString("user", user);<br />
editor.putString("pwd", pwd);<br />
editor.putBoolean("checked", bchk);<br />
}<br />
//chấp nhận lưu xuống file<br />
editor.commit();<br />
}<br />
1.4<br />
<br />
Gắn code cho các sự kiện<br />
<br />
1.4.1 Xử lý cho LoginActivity<br />
@Override<br />
protected void onCreate(Bundle savedInstanceState) {<br />
super.onCreate(savedInstanceState);<br />
setContentView(R.layout.activity_login);<br />
btnDangNhap = (Button)findViewById(R.id.btnDangNhap);<br />
txtUser = (TextView)findViewById(R.id.txtUser);<br />
txtPass = (TextView)findViewById(R.id.txtPass);<br />
chkGhiNho = (CheckBox)findViewById(R.id.chkGhiNho);<br />
btnDangNhap.setOnClickListener(new View.OnClickListener() {<br />
@Override<br />
public void onClick(View v) {<br />
//luu trang thai<br />
savingPreferences();<br />
finish();//đóng màn hình hiện tại<br />
Intent mh = new Intent(LoginActivity.this, LoginSuccessActivity.class);<br />
//truyền dữ liệu qua màn hình mới<br />
mh.putExtra("user", txtUser.getText().toString());<br />
startActivity(mh);//mở màn hình mới<br />
}<br />
});<br />
}<br />
<br />
@Override<br />
protected void onPause() {<br />
Ths. Lương Trần Hy Hiến, KHOA CNTT – TRƯỜNG ĐH SƯ PHẠM TP. HCM<br />
<br />
4<br />
<br />
Ver 1.0 – 2016, FIT - HCMUP<br />
<br />
Lab 07: Data Storage<br />
<br />
super.onPause();<br />
//gọi hàm lưu trạng thái<br />
savingPreferences();<br />
}<br />
@Override<br />
protected void onResume() {<br />
super.onResume();<br />
//gọi hàm đọc trạng thái ở đây<br />
restoringPreferences();<br />
}<br />
1.4.2 LoginSuccessActivity<br />
<br />
protected void onCreate(Bundle savedInstanceState) {<br />
super.onCreate(savedInstanceState);<br />
setContentView(R.layout.activity_login_success);<br />
txtMsg=(TextView) findViewById(R.id.txtmsg);<br />
btnThoat=(Button) findViewById(R.id.btnThoat);<br />
btnThoat.setOnClickListener(new View.OnClickListener() {<br />
@Override<br />
public void onClick(View arg0) {<br />
// TODO Auto-generated method stub<br />
finish();<br />
}<br />
});<br />
Intent i = getIntent();<br />
txtMsg.setText("Hello : " + i.getStringExtra("user"));<br />
}<br />
<br />
Ths. Lương Trần Hy Hiến, KHOA CNTT – TRƯỜNG ĐH SƯ PHẠM TP. HCM<br />
<br />
5<br />
<br />