App Inventor學習記錄104-用微型資料庫 tinydb將關閉程式前的狀態保留在本機上

在 app inventor中,如果想把關閉程式前的狀態保留在本機上,我們可以使用 tinydb微型資料庫這個元件。這裡測試按鈕啟用,複選盒選中,滑桿位置、日期與時間
記錄一下:
App Inventor學習記錄104-用微型資料庫 tinydb將關閉程式前的狀態保留在本機上


這次完成的 APP範例如下:

我們先設定一下我們目前各項元件的屬性。儲存在微型資料庫中。關閉程式之後,再重新打開。
由於畫面初始化的時候,我們會呼叫微型資料庫,取得畫面關閉前最後的一次記錄。我們再用這個最後一次的記錄,去判斷每個元件在畫面初始化後的狀態。
這樣的話,我們就會看到程式打開之後,相關的資料,就會是我們畫面關閉前數據。


畫面配置如下:

1.  按鈕啟用,這裡放了兩個按鈕,ON按下按下去後,會把 ON按鈕設定成不啟用,同時把 OFF按鈕,設定成啟用。OFF按鈕的作用跟 ON按鈕相反。

2. 複選盒選中,這個就是要設定有沒有勾選。
3. 用日期選擇器,選擇一個日期,並顯示在某個標籤上。
4. 滑桿位置,用滑桿拉到某個位置,並顯示在某個標籤上。
5. 用時間選擇器,選擇一個時間,並顯示在某個標籤上。

另外,還放了一個清單顯示器來,來即時的看出變數_全部狀態這個清單中,各項數據的資料。


全部的程式碼如下。


第 1部份的程式碼說明:

建立變數_按鈕啟用,初始值設定空白,這個用來儲存按鈕的啟用狀態。
建立變數_複選盒選中,初始值設定空白,這個用來儲存複選盒的選中狀態。
建立變數_日期選擇器,初始值設定空白,這個用來儲存選擇後的日期。
建立變數_滑桿位置,初始值設定空白,這個用來儲存滑桿的位置。
建立變數_時間選擇器,初始值設定空白,這個用來儲存選擇後的時間。
建立變數_全部的狀態,初始值設定空清單,這個用來儲存變更後的全部元件狀態或是數值


第 2部份的程式碼說明:

按鈕_ON被點選的時候:
按鈕_ON的啟用,設定為假。
變數_按鈕啟用的值,設定為假。
按鈕_OFF的啟用,設定為真
變數_全部狀態這個清單中的第 1項的內容,改成變數_按鈕啟用的值。
呼叫微型資料庫來把變數_全部狀態,儲存到全部狀態這個標籤下。
把清單顯示器的元素,設定成變數_全部狀態這個清單。這部份,等一下就不額外說明了。

這裡做的就是按下 ON按鈕之後,就不能再按下 ON按鈕,然後把 OFF按鈕打開。
比較重要的是要把變數_按鈕啟用的值,同時做一下設定。


第 3部份的程式碼說明:

這個部份跟按鈕_ON的作法剛好相反。
只是因為只有 2個按鈕,所以共用一個變數_按鈕啟用就可以了。當然,我們也可以針對每一個按鈕去設定一個變數。這樣比較清楚,這裡就偷懶一下。
只要是狀態有更新,我們就呼叫微型資料庫,把最新的狀態給儲存一下。


第 4部份的程式碼說明:

複選盒稍稍比較特別一下,在複選盒1.選中這個方塊中,它本身代出的值,就是 true。所以在拉判斷式的時候,就可以直接拿來使用。也就是說,如果複選盒 1有被打勾的話,就把變數_複選盒選中的值設定為真。
變數_全部狀態這個清單中,第 2項的值,取代成變數_複選盒選中的值。
呼叫微型資料庫來儲存數值

如果複選盒 1沒有被打勾的話,就把變數_複選盒選中的值設定為假。
變數_全部狀態這個清單中,第 2項的值,取代成變數_複選盒選中的值。
呼叫微型資料庫來儲存數值


第 5部份的程式碼說明:

日期選擇器的部份,在選擇一個日期之後,把變數_日期選擇器的值,用合併文字方法,取得相關的時間。
再用一個標籤元件把它顯示出來,也就是把標籤_日期選擇器的文字設定成變數_日期選擇器的值。
同樣的,把變數_全部狀態這個清單中,第 3項的值,取代成變數_日期選擇器的值。
呼叫微型資料庫來儲存數值


第 6部份的程式碼說明:

滑桿這個元件,它數值的變化會產生在拉動滑桿的時候
所以我們取值的時候,就要用當滑桿 1.位置變化這個方塊來取值。
它的值就是下方的指針位置,所以我們把變數_滑桿位置,設定成取指針位置
再把標籤_滑桿的文字,設定成變數_滑桿位置
變數_全部狀態這個清單中,第 4項的值,取代成變數_滑桿位置的值。
呼叫微型資料庫來儲存數值


第 7部份的程式碼說明:

在時間選擇器這裡,跟日期選擇器的作法是相同的。
只是要替換變數_全部狀態這個清單中的項次不同。

前面這幾個方塊做下來,我們都會把最新的值儲存到微型資料庫全部狀態的這一個標籤中
所以當我們程式關閉的時候,這些值就會保持在它們最後一次更新的值上。
接著,我們就可以放心關閉程式。


第 8部份的程式碼說明:

程式重新打開的時候,我們就呼叫微型資料庫,去取得全部標籤下的這個值
變數_全部狀態這個清單的值,設定成我們最後一次儲存的資料。

但為什麼這裡把微型資料庫無標籤時的回傳值,設定成 csv列轉清單,文字 1,2,3,4,5
因為我們要考慮到程式第一次打開的時候,微型資料庫中全部狀態這個標籤下是沒有值的,但是我們又要用到取代清單項次的功能。所以這裡就用 csv列轉清單的方塊,先建一個初始值進去。

接下來,我們就可以用變數_全部狀態這個清單下的某一個項次的值,下去做判斷。
把我們要用的元件的狀態,設定回關閉程式前的最後一個狀態。


之前用微型資料庫保存的資料,都是數值或是文字,參考如下:
計算 BMI值,並用 TinyDB把資料給記錄下來
用 TinyDB微型資料庫,做一個簡單的記事本 app

這次我們只是把微型資料庫儲存的值,改成一個清單。
我們再針對這個清單的內容下去做儲存、讀取及使用。
概念是相同的。

好的,這次的 apk檔的下載連結如下:
點我下載 NO_104_tinydb_save.aia

參考書籍請見博客來書籍介紹頁面:
手機應用程式設計超簡單 App Inventor 2零基礎入門班
TQC+ 創意App程式設計認證指南
TQC+創意App程式設計認證指南解題秘笈
手機應用程式設計超簡單:App Inventor 2初學特訓班
手機應用程式設計超簡單:App Inventor 2小專題特訓班
手機應用程式設計超簡單:App Inventor 2資料庫專題特訓班

之前介紹過的一些 appinventor的使用記錄,都整理在下面這個頁面上了。
APP INVENTOR學習記錄及資源整理頁面

發表迴響