趁着复习Android,就多写写基础博客。

Android的四种数据存储方式:
1、SharedPreferences
2、SQLite
3、ContentProvider
4、File

SharedPreferences:
1、是一种轻型的数据存储方式
2、本质是基于XML文件存储key-value键值对数据
3、通常用来存储一些简单的配置信息

1、SharedPreferences对象本身只能获取数据而不支持存储和修改,存储修改是通过Editor对象实现。
2、实现SharedPreferences存储的步骤如下:
(1)获得SharedPreferences对象
(2)获得SharedPreferences.Editor对象
(3)通过Editor接口的putXxx方法保存key-value对其中Xxx表示不同的数据类型
(4)通过Editor接口的commit方法保存key-value对

通过一个登录记住用户名和密码的案例来分析:
布局代码如下:

<RelativeLayout 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" tools:context=".MainActivity" >    <TextView  android:id="@+id/textView1" android:layout_width="wrap_content" android:layout_height="wrap_content" android:layout_alignParentLeft="true" android:layout_alignParentTop="true" android:layout_marginTop="16dp" android:text="用户名:" />    <EditText  android:id="@+id/etuserName" android:layout_width="wrap_content" android:layout_height="wrap_content" android:layout_alignParentRight="true" android:layout_alignTop="@+id/textView1" android:layout_toRightOf="@+id/textView1" android:ems="10" >        <requestFocus />    </EditText>    <TextView  android:id="@+id/aa" android:layout_width="wrap_content" android:layout_height="wrap_content" android:layout_alignParentLeft="true" android:layout_below="@+id/etuserName" android:text="密 码" />    <EditText  android:id="@+id/etuserpass" android:layout_width="wrap_content" android:layout_height="wrap_content" android:layout_alignLeft="@+id/etuserName" android:layout_alignParentRight="true" android:layout_alignTop="@+id/aa" android:password="true" android:ems="10" >    </EditText>    <CheckBox  android:id="@+id/chkSaveName" android:layout_width="wrap_content" android:layout_height="wrap_content" android:layout_alignParentLeft="true" android:checked="false" android:layout_below="@+id/etuserpass" android:text="保存用户信息" />    <Button  android:id="@+id/btnLogin" android:layout_width="wrap_content" android:layout_height="wrap_content" android:layout_alignParentLeft="true" android:layout_below="@+id/chkSaveName" android:onClick="doClick" android:text="登陆" />    <Button  android:id="@+id/btnCancel" android:layout_width="wrap_content" android:layout_height="wrap_content" android:layout_alignBaseline="@+id/btnLogin" android:layout_alignBottom="@+id/btnLogin" android:layout_toRightOf="@+id/btnLogin" android:onClick="doClick" android:text="取消" /></RelativeLayout>

MainActivity.class

public class MainActivity extends AppCompatActivity {    EditText etUserName, etUserPass;    CheckBox chk;    SharedPreferences pref;    SharedPreferences.Editor editor;    @Override    protected void onCreate(Bundle savedInstanceState) {        super.onCreate(savedInstanceState);        setContentView(R.layout.activity_main);        etUserName = (EditText) findViewById(R.id.etuserName);        etUserPass = (EditText) findViewById(R.id.etuserpass);        chk = (CheckBox) findViewById(R.id.chkSaveName);        pref = getSharedPreferences("UserInfo", MODE_PRIVATE);        editor = pref.edit();        String name = pref.getString("userName", "");        String pass = pref.getString("userPassword", "");        if(name == null)        {            chk.setChecked(false);        }        else        {            chk.setChecked(true);            etUserName.setText(name);            etUserPass.setText(pass);        }    }    public void doClick(View view) {        switch (view.getId()) {            case R.id.btnLogin:                String name = etUserName.getText().toString().trim();                String pass = etUserPass.getText().toString().trim();                if (name.equals("admin") && pass.equals("123456")) {                    if(chk.isChecked())                    {                        editor.putString("userName", name);                        editor.putString("userPassword", pass);                        editor.commit();                    }                    else                    {                        editor.remove("userName");                        editor.commit();                    }                    Toast.makeText(MainActivity.this, "登录成功", Toast.LENGTH_SHORT).show();                }                else                {                    Toast.makeText(MainActivity.this, "禁止登录", Toast.LENGTH_SHORT).show();                }                break;        }    }

更多相关文章

  1. 类和 Json对象
  2. Android(安卓)中文 API (36) ―― Toast
  3. Android屏幕元素层次结构
  4. Android的线程使用来更新UI----Thread、Handler、Looper、TimerT
  5. Android中intent传递对象和Bundle的用法
  6. Android中使用响应式编程RxJava
  7. Service与Android系统实现(1)-- 应用程序里的Service
  8. Android中List、Set、Map数据结构详解
  9. Android(安卓)中文API (65) ―― BluetoothClass[蓝牙]

随机推荐

  1. React新特性一览
  2. 紫微圣人的程序员人生 [原创IT小说]--第
  3. JavaScript中的基本字符串与字符串对象的
  4. JavaScript中是如何定义私有变量的
  5. 浅谈时间复杂度
  6. 什么是Linux系统?哪个发行版本好?
  7. 记录一次体体现前端工具仔综合实力的实际
  8. 今天聊点干货—关于CSS样式来源
  9. Severlet跳转JSP,切换div
  10. 关于this,你真的了解吗?