之前用 App Inventor 寫了一個計算混合酒精濃度的 app

這個 app 運作方式很簡單,輸入一開始的酒精濃度和容量,

再輸入想要稀釋的酒精濃度,就可以算出需要加多少水~

不過一直有個問題:當程式重開之後,這些都會回復預設值,不會記住原本設定好的值...

 

其實這個問題用 TinyDB 就可以解決了,TinyDB 可以在手機裡儲存 name=value 的組合,

因此像簡單的設定值是蠻適合使用 TinyDB 來儲存的~

 

1. 加入 TinyDB 元件

在 App Inventor 的 Designer 模式,選擇左側 Palette > Storage > TinyDB,拉到 app 裡面去:

Screen Shot 2017-01-08 at 12.20.21 AM

 

2. 將設定值儲存至 TinyDB

我的 app 設計是按下「計算」鈕之後,會先檢查輸入值是否有效,再顯示計算後的值,

因此儲存設定的時間點很適合放在「按下計算鈕」之後,

因為這樣可以確保存下來的不是無效的設定值~

 

在 Block 模式,點下 TinyDB 元件後,選擇 StoreValue 的功能,

就可以將設定的值 (valueToStore) 儲存在某個名稱 (tag) 下面,

例如我將 TextBoxInDensity 的內容儲存致 InDensity 這個名稱下面,其他兩個設定值也是類似:

Screen Shot 2017-01-08 at 12.26.19 AM

 

3. 從 TinyDB 中讀出設定值

什麼時候需要從 TinyDB 讀出設定值呢?這個依 app 而異,

以我這個 app 來說,只要在程式一開始的時候,讀出最後一次執行時,保留的設定值就可以了,

因此我可以在 Screen.Initialize 初始化時讀取設定值~

 

一樣是點選 TinyDB 元件,用 GetValue 方法取得跟特定名稱 (tag) 相關聯的設定值,

如果取不到的話,就會用 valueIfTagNotThere 的值,

所以下面就是如果取不到 InDensity 的設定值的話,就用預設的 95:

Screen Shot 2017-01-08 at 12.42.50 AM  

 

將 app 使用 TinyDB 改寫後,重開 app 也能保有上次執行設定好的值,

使用者不需要再重新輸入一次,算是個簡單又好用的元件喔~^^

 

文章標籤
創作者介紹

亂打一通的心情日記

ephrain 發表在 痞客邦 PIXNET 留言(0) 人氣()