Android Studio初学笔记-Day19-SharedPreferences

SharedPreferences

SharedPreferences可以做到储存简单资料的功能,简单的应用像储存登入帐号的资料或者其他需要储存少量的资料的时候可以派上用场,如果资料量大的话就不建议使用了,今天就来讲讲它是怎麽储存资料的。

  • 首先SharedPreferences的用法如下
    宣告SharedPreferences变数并透过getSharedPreferences(String name, int mode)指向name的档案,若无则创建一个档案,以及设定mode权限可以输入0、1、2、4去取得相对应的权限或者输入的MODE去找寻需要的权限,比较建议使用後者必较不会有使用错的问题,接者可以透过edit()对资料编辑新增,和bundle的新增方法相似,可以依类型(String、Int等)新增资料,接者看以下范例示范来更清楚我所说的用法吧。在布局上我设计一个登入页面如下

activity_main.xml介面

https://ithelp.ithome.com.tw/upload/images/20210908/20139136VycdnzPEuO.png

MainActivity程序码

public class MainActivity extends AppCompatActivity {
    SharedPreferences pref;
    EditText account,password;
    @Override
    protected void onCreate(Bundle savedInstanceState) {
        super.onCreate(savedInstanceState);
        setContentView(R.layout.activity_main);
        account = (EditText) findViewById(R.id.account);
        password = (EditText) findViewById(R.id.password);
    }
    //新增储存资料
    public void sava(View v){
        pref = getSharedPreferences("DATA",MODE_PRIVATE);
        pref.edit()
            .putString("NAME",account.getText().toString())
            .putString("PHONE",password.getText().toString())
            .apply();                   //或commit()
    }
    //读取资料
    public void read(View v){
        pref = getSharedPreferences("DATA",MODE_PRIVATE);
        account.setText(pref.getString("NAME",""));
        password.setText(pref.getString("PHONE",""));
    }
    //清除EditTexts内容
    public void clear(View v){
        pref = getSharedPreferences("DATA",MODE_PRIVATE);
        account.setText("");
        password.setText("");
        //下面程序码能清除所有资料
        /*SharedPreferences.Editor editor = pref.edit();
        editor.clear();
        editor.commit();*/

    }
}

可以看到在新增SharedPreferences资料最後有用到commit(),这里也可以使用apply(),主要差别在:

  • commit():直接将修改结果写入档案。
  • apply():修改记忆体中的暂存资料,并以非同步式写入档案。

而取得资料的方法也大同小异,一样透过变数宣告并在getSharedPreferences(String name, int mode)输入相同的档名取得刚新增的档案,接者依要取出的资料型态get资料。最後展示出类似登入时记住帐密的效果。
https://ithelp.ithome.com.tw/upload/images/20210908/20139136tK0hNkQcRc.png
今天的SharedPreferences就讲到这边,谢谢大家~/images/emoticon/emoticon41.gif


<<:  认识CSS(九):CSS滤镜特效

>>:  元件内建拖放(drag & drop)效果

DNS 安全扩展 (DNSSEC)

-DNSSEC 资源记录(来源:InfoBlox) DNSSEC使用数字签名确保DNS 数据的完整...

Laravel 实作 Webhooks

前言 那时候找不到完全符合需求的可以直接用或改,所以最後自己写了一个,供大家参考。 根据我爬文,要用...

Day 17 Server Message Block (SMB)相关安全

因为电脑坏掉了,所以暂时没有截图 QQ Server Message Block (SMB) SMB...

[DAY 26] 分散式训练

前言 在上一章我们知道如何在一台机器上使用多张 GPU 来Training,这对我们 Train 大...

Day 09 Parameters

假如我们想增加的按钮用来清除form的资料,最快的方式是增加一个type=”reset”的按钮,这时...