[Day 28] Android SharePreference

SharePreference 用来 放置 Local 的资料 , 在不同的 Activity 或 Fragment ,只要实例化 SharePreference ,就可以共用资料

设置 SharePreference class

  1. 调用 context.getSharedPreferences 会返回一个接口 (Interface), 利用这个接口 取得单例的 sharedPreference 物件, 我们可以 去 存取或变更 preference data , context.getSharedPreferences 传入的第一个参数 是存在 手机的档案名称 ,另一个参数 是存取模式 MODE_PRIVATE , 这个参数的意义是使用范围限 这个 application

  2. 透过 edit () 取得进行修改的 Editor 物件

  3. 利用 Editor 物件存放资料 (put) , 在放置时需加上 tag , 如下 tag 为 "money"

    可以放置的 Type 有 Boolean Float Int Long String

  4. 利用 sharedPreference 物件提取资料 (get) 在提取时需加上 要提取资料的 tag , 如下 tag 为 "money" ,提取出 来的资料为 savemoney 放入的资料

    可以提取的 Type 有 Boolean Float Int Long String

  5. 利用 Editor 清除所有资料 (put) clear()+commit()


class SaveUserMoney(context: Context)  {
    
    // (1
    
    private val pref = context.getSharedPreferences("Total", Context.MODE_PRIVATE)
    
    // (2

    val editor = pref.edit()

    // (3

    fun savemoney(money: String) {

        editor.putString("money", money ).apply()

    }

     // (4

    fun getmoney() :String?{
        return pref.getString("money","")

    }
    
     // (5
    fun  delete(){

        editor.clear().commit()
    }

}

Activity(save)

  1. 建立 我们自己写好的 SaveUserMoney class 物件

  2. 调用 物件里面的 savemoney function , function 内 Editor 物件 调用putString() 放置传入的变数 money 指向的 value ,和预设传入的 value ,再调用 apply() 去完成储存动作


class MainActivity : AppCompatActivity() {
    
        override fun onCreate(savedInstanceState: Bundle?) {
        super.onCreate(savedInstanceState)
        setContentView(R.layout.activity_main)
        // (1
        val pref =  SaveUserMoney(this)
       
        val money = "x"
        // (2
        pref.savemoney(money)
        
    }
    
  }  
    

Activity(get)

  1. 建立 我们写好的 SaveUserMoney class 物件

  2. 调用 物件里面的 getmoney function , function 内 会从 sharedPreference 物件 ( sharedPreference 调用getString() 传入 我们要找的资料所拥有的 tag , 和回传的预设值, 回传 tag 相对应的资料 )得到我们所需要的资料, getmoney function 再回传得到的值


class MainActivity2 : AppCompatActivity() {

        override fun onCreate(savedInstanceState: Bundle?) {
        super.onCreate(savedInstanceState)
        setContentView(R.layout.activity_main2)
        // (1
        val pref =  SaveUserMoney(this)
        // (2 
        val money= pref.getmoney()
    }
 

Activity(delete)

  1. 建立 我们写好的 SaveUserMoney class 物件

  2. 调用 物件里面的 delete() function , function 内会 Editor 物件 调用 clear() 再commit() , 去清空所有资料


class MainActivity2 : AppCompatActivity() {

        override fun onCreate(savedInstanceState: Bundle?) {
        super.onCreate(savedInstanceState)
        setContentView(R.layout.activity_main2)
        // (1
        val pref =  SaveUserMoney(this)
        // (2 
        val money= pref.delete()
    }
 

<<:  铁人赛28天 VScode Live Sass设定

>>:  Day029-透过Vuex-实作简易部落格-打包你的专案吧!

【Day 07】tuple 介绍!

前言 今天要来继续接着介绍 tuple 的使用方法,包含了 Unpack(拆包),还有取出 tupl...

JavaScript学习日记 : Day14 - 原型与继承(一)

在写程序时,我们经常会想要拓展一些东西。 例如我们有一个user object,他有自己的属性跟函数...

DAY25 深度学习-卷积神经网路-Yolo v3

今天介绍一下Yolo v3, 首先在v3中使用了darknet-53的架构,架构如下图: 相比v2的...

鬼故事 - 这不是後门这是工程模式!

鬼故事 - 这不是後门这是工程模式! Credit: sandserif 故事开始 故事回到小弯的公...