iT邦幫忙

2019 iT 邦幫忙鐵人賽

DAY 17
0

LocalStorage

LocalStorage

實作過程_MainActivity

我們在 onCreate 建立 Button 的 Listener 並分別放入相對的 function

override fun onCreate(savedInstanceState: Bundle?) {
        super.onCreate(savedInstanceState)
        setContentView(R.layout.activity_main)

        saveBtn.setOnClickListener { save() }
        nextBtn.setOnClickListener { next() }

    }

SharedPreferences

    val userName = nameEditText.text.toString()
    val sharePreferences = getSharedPreferences("userName", Context.MODE_PRIVATE)
    val shareEditor = sharePreferences.edit()
    

我們透過 getSharedPreferences 來建立新的設定檔

第一個參數用來定義設定檔檔名

第二個參數用來設定使用權限

MODE_PRIVATE 指的是只允許本應用程式使用,是最常使用的參數

想要知道更多其他參數可以到官網查詢

接下來我們會實作 sharePreferences.edit() 所有有關資料的儲存、讀取、刪除都需要透過這個 Editor

SharePreference 是透過 key - value 的方式來儲存資料,如下

shareEditor.putString("userName", userName).apply()

我們透過 Editor 把 userName 這個值存起來而他的 Key 則是 "userName"

最後切記一定要 apply() 或 commit()

Save function

private fun save() {

        val userName = nameEditText.text.toString()
        val sharePreferences = getSharedPreferences("userName", Context.MODE_PRIVATE)
        val shareEditor = sharePreferences.edit()

        if (userName.isEmpty() or userName.isBlank()) {
            Toast.makeText(this, "please enter your name", Toast.LENGTH_SHORT).show()
        } else
        {
            shareEditor.putString("userName", userName).apply()
            }

        }

我們在 save function 中加入判斷防止使用者沒有輸入值或是輸入空白。

ResultActivity

 private fun show() {

        val sharePreferences = getSharedPreferences("userName", Context.MODE_PRIVATE)
        val userName = sharePreferences.getString("userName", "")
        showNameTextView.text = userName

    }

在顯示使用者姓名的 Activity 中我們可以透過 sharePreference 中的 getString 來獲得存在 preference 的值

第一個參數是 key

第二個參數則是 如果這個 key 沒有對應的 value 他會回應的 value 一般而言預設為 null

還有一個問題 apply() 與 commit() 的差異

apply 與 commit 有幾個差別在於 commit 會回傳 Boolean 顯示動作成功與否,讓設計這能夠做調整。

如果進行很多次 commit 效率也會比較差。

更詳細的 source code 請到 Github


上一篇
Day16_GitHubSearch
下一篇
Day18_DrawerActivity
系列文
發現新大陸-Android Kotlin 開發之路30
圖片
  直播研討會
圖片
{{ item.channelVendor }} {{ item.webinarstarted }} |
{{ formatDate(item.duration) }}
直播中

尚未有邦友留言

立即登入留言