iT邦幫忙

第 12 屆 iThome 鐵人賽

DAY 28
1

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()
    }
 

上一篇
[Day 27] RecyclerView 下 - itmetouchhelper
下一篇
[Day 29 ] SQLite 上
系列文
Android 菜鳥村-開發基礎 30篇32
圖片
  直播研討會
圖片
{{ item.channelVendor }} {{ item.webinarstarted }} |
{{ formatDate(item.duration) }}
直播中

尚未有邦友留言

立即登入留言