信息记录
主要是应对处理记住密码,程序配置的这种操作,有点像Windows下的ini文件,但是这个对应的是XML。
SharedPreferences类
这个类操作起来比较的简单,无非就是获取编辑器然后写。读就是直接读。
这个对象不是new的,而是通过方法获得的。
1 2 3 4 5
| private SharedPreferences prf; prf = getSharedPreferences("config", MODE_PRIVATE); Editor edit = prf.edit(); edit.putString("Name", "Wker"); edit.commit();
|
这个样子我们就存储了我们的内容,权限的话呢就是对应的rw那三个。
读取的话呢也是比较简单的:
1
| prf.getString("Name1", "ppp")
|
第二个参数是个默认值,就和我们在读ini一样,也需要一个默认值,就是这个节点不存在的话呢,所返回的值。
实例记住密码
首先我们先布局:
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
| <LinearLayout xmlns:android="http://schemas.android.com/apk/res/android" xmlns:tools="http://schemas.android.com/tools" android:layout_width="match_parent" android:layout_height="match_parent" android:orientation="vertical"> <EditText android:id="@+id/Ed1" android:layout_width="match_parent" android:layout_height="wrap_content" /> <EditText android:id="@+id/Ed2" android:layout_width="match_parent" android:layout_height="wrap_content" /> <CheckBox android:id="@+id/Cb_rember" android:layout_width="wrap_content" android:layout_height="wrap_content" android:text="记住密码" /> <Button android:onClick="onClick" android:id="@+id/Bt_Login" android:layout_width="wrap_content" android:layout_height="wrap_content" android:text="登录" android:layout_gravity="center_horizontal" />
</LinearLayout>
|
android:onClick="onClick"
这个属性节点,主要是告诉编译器,我们这个按钮控件的一个点击事件,我直接放在名为:onClick
这个方法里面,这个名字可以自己改。
首先我们先是初始化控件和记录对象:
1 2 3 4 5 6 7 8 9 10 11
| private EditText ed_1; private EditText ed_2; private CheckBox cb_rem; private SharedPreferences prf;
prf = getSharedPreferences("config", MODE_PRIVATE); ed_1 = (EditText) findViewById(R.id.Ed1); ed_2 = (EditText) findViewById(R.id.Ed2); cb_rem = (CheckBox) findViewById(R.id.Cb_rember);
|
然后我们处理点击事件。
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15
| public void onClick(View view) { Editor edit = prf.edit(); if(cb_rem.isChecked()) { edit.putString("username", ed_1.getText().toString()).putString("password", ed_2.getText().toString()); edit.putBoolean("rember", true); }else { edit.remove("username").remove("password"); edit.putBoolean("rember", false); } edit.commit(); Toast.makeText(this, "OK", Toast.LENGTH_SHORT).show(); }
|
可以看出就是通过checkbox是否选中,来选择是不是记住密码,不是的话呢就remove,最后提交。
然后在我们onCreate执行的时候我们判断一下就好了。
1 2 3 4 5 6
| if(prf.getBoolean("rember", false)) { ed_1.setText(prf.getString("username", "")); ed_2.setText(prf.getString("password", "")); cb_rem.setChecked(true); }
|