复选框总是被选中是因为 pref.getString("userName", "")不会反回null值吧? 加上name.equals("") 就好了.
String name = pref.getString("userName", "");
if (name == null||name.equals("")) {
chk.setChecked(false);
} else {
chk.setChecked(true);
etUserName.setText(name);
}