用一个小例子来使用SharedPreferences
看下运行结果
输入账号与密码
当我返回重新打开时,用户名会自动填写~这是因为我点击了CheckBox
下面看下实现方法
第一步:对布局进行编辑
<EditText
android:layout_width="match_parent"
android:layout_height="wrap_content"
android:id="@+id/et1"
android:layout_toEndOf="@+id/tv1" />
<TextView
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:text="用户名:"
android:id="@+id/tv1"
android:layout_alignBaseline="@+id/et1"
android:layout_alignBottom="@+id/et1"
android:layout_alignParentStart="true" />
<EditText
android:id="@+id/et2"
android:layout_width="match_parent"
android:layout_height="wrap_content"
android:layout_below="@+id/et1"
android:layout_toEndOf="@+id/tv2" />
<TextView
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:text="密 码:"
android:id="@+id/tv2"
android:layout_alignBaseline="@+id/et2"
android:layout_alignBottom="@+id/et2"
android:layout_alignParentStart="true" />
<CheckBox
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:id="@+id/cb"
android:checked="false"
android:text="保存用户名"
android:layout_below="@+id/et2"
android:layout_alignParentStart="true"
android:layout_marginTop="34dp" />
<Button
android:onClick="doClick"
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:text="登陆"
android:layout_alignBaseline="@+id/button"
android:layout_alignBottom="@+id/button"
android:layout_toStartOf="@+id/button"
android:id="@+id/button2" />
<Button
android:onClick="doClick"
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:text="取消"
android:layout_marginTop="29dp"
android:layout_marginStart="13dp"
android:id="@+id/button"
android:layout_below="@+id/cb"
android:layout_toEndOf="@+id/cb" />
第二步:来到Mactivity.java进行编写
public class MainActivity extends AppCompatActivity {
private EditText et1,et2;
private CheckBox cb;
private SharedPreferences Preferences;
private SharedPreferences.Editor editor;
@Override
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.activity_main);
et1= (EditText) findViewById(R.id.et1);
et2= (EditText) findViewById(R.id.et2);
cb= (CheckBox) findViewById(R.id.cb);
//获取SharedPreferences对象
Preferences=getSharedPreferences("UserIfo",MODE_PRIVATE);
//启动编辑
editor=Preferences.edit();
//第二次登陆时直接从Preferences中赋值给name
String name=Preferences.getString("userName","");
if (name==null){
//若是第一次登陆则name为空,此时cb不为勾选状态
cb.setChecked(false);
}else {
//若是不是第一次登陆则name不为空,此时设置cb为勾选状态
cb.setChecked(true);
//将name从Preferences获取出来赋值给et1
et1.setText(name);
}
}
public void doClick(View view){
switch (view.getId()){
case R.id.button2:
//获取EditText控件上所输入的值
String user=et1.getText().toString().trim();
String press=et2.getText().toString().trim();
//判断下EditText输入的账号与密码是否一致
if ("admin".equals(user)&&"123456".equals(press)){
//判定Checked是否勾选了
if (cb.isChecked()){
//勾选了就把用户名存到editor中去
editor.putString("userName",user);
//提交下
editor.commit();
}else {
//若没有勾选,则把用户名给移除
editor.remove("userName");
//然后再提交下
editor.commit();
}
Toast.makeText(MainActivity.this, "登陆成功!", Toast.LENGTH_SHORT).show();
}else {
Toast.makeText(this, "禁止登陆", Toast.LENGTH_SHORT).show();
}
break;
}
}
}