Android SeekBar在刷新使用中需要注意的問題
Android開發(fā)筆記:關(guān)于SeekBar在刷新使用中的一些問題
問題
今天在用Navigation 在兩個Fragment之間導(dǎo)航時發(fā)現(xiàn)了從第二個Fragment返回到第一個Fragment時SeekBar出現(xiàn)數(shù)據(jù)丟失和進度條不刷新的情況。
具體Demo是在第一個Fragemnt中通過滑動條改變ViewModel中的數(shù)據(jù),并在點擊按鈕后
導(dǎo)航進入第二個Fragment,在第二個Fragment中繼續(xù)改變該數(shù)據(jù),然后在通過返回鍵返
回第一個Fragment并且刷新進度條和數(shù)據(jù)。
但是其實ViewModel中的數(shù)據(jù)是正確的的。



分析問題
通過添加日志對SeekBar相關(guān)的方法的執(zhí)行情況進行分析后,發(fā)現(xiàn)在對SeekBar設(shè)置監(jiān)聽
器后,第一次創(chuàng)建Fragment中的視圖中SeekBar中的監(jiān)聽方法:
public void onProgressChanged(SeekBar seekBar, int progress, boolean fromUser)
總會先執(zhí)行一次,而且該方法中的progress值仍為先前的值,進度條UI也仍然是之前的進度。 總之在數(shù)據(jù)同步的方面總有一些問題。
解決方法
在Fragment中添加一個標志位來判斷onProgressChanged是否是第一次執(zhí)行,若是第一次執(zhí)行,就在SeekBar中讀取viewModel中的值,并且在onProgressChanged方法中手動更改進度條:
seekBar.setOnSeekBarChangeListener(new SeekBar.
OnSeekBarChangeListener() {
@Override
public void onProgressChanged(SeekBar seekBar, int progress,
boolean fromUser) {
if(isSeekBarFirst){
isSeekBarFirst = false;
seekBar.setProgress(initData);
}else {
viewModel.getNumber().setValue(seekBar.getProgress());
}
} -否則,就將進度條的值讀取并更改ViewModel中的值。
到此這篇關(guān)于Android SeekBar在刷新使用中需要注意的問題的文章就介紹到這了,更多相關(guān)Android SeekBar刷新內(nèi)容請搜索腳本之家以前的文章或繼續(xù)瀏覽下面的相關(guān)文章希望大家以后多多支持腳本之家!
相關(guān)文章
Android使用IntentService進行apk更新示例代碼
這篇文章主要介紹了Android使用IntentService進行apk更新示例代碼,小編覺得挺不錯的,現(xiàn)在分享給大家,也給大家做個參考。一起跟隨小編過來看看吧2018-01-01
深入了解Android中GestureDetector的定義與使用
Android中的GestureDetector?可以使用?MotionEvents?檢測各種手勢和事件,非常的好用。本文將會通過幾個具體的例子來講解一下GestureDetector的具體使用方法,需要的可以參考一下2023-01-01
Android實現(xiàn)GridView中ImageView動態(tài)變換的方法
這篇文章主要介紹了Android實現(xiàn)GridView中ImageView動態(tài)變換的方法,以實例形式較為詳細的分析了GridView中ImageView動態(tài)變換的頁面布局及功能實現(xiàn)相關(guān)技巧,需要的朋友可以參考下2015-10-10
Android批量插入數(shù)據(jù)到SQLite數(shù)據(jù)庫的方法
這篇文章主要為大家詳細介紹了Android批量插入數(shù)據(jù)到SQLite數(shù)據(jù)庫的方法,具有一定的參考價值,感興趣的小伙伴們可以參考一下2017-03-03
Android開發(fā)實現(xiàn)帶有反彈效果仿IOS反彈scrollview教程詳解
本文給大家分享android開發(fā)實現(xiàn)帶有反彈效果,模仿ios反彈scrollview詳細教程,本文介紹的非常詳細,具有參考借鑒價值,感興趣的朋友一起看看吧2016-09-09
Android報錯Error:Could not find com.android.tools.build:gradle
這篇文章主要介紹了Android Studio報錯Error:Could not find com.android.tools.build:gradle:4.1解決辦法,碰到該問題的同學(xué)快過來看看吧2021-08-08
詳解Android開發(fā)錄音和播放音頻的步驟(動態(tài)獲取權(quán)限)
這篇文章主要介紹了詳解Android開發(fā)錄音和播放音頻的步驟(動態(tài)獲取權(quán)限),文中通過示例代碼介紹的非常詳細,對大家的學(xué)習(xí)或者工作具有一定的參考學(xué)習(xí)價值,需要的朋友們下面隨著小編來一起學(xué)習(xí)學(xué)習(xí)吧2019-08-08
Flutter事件監(jiān)聽與EventBus事件的應(yīng)用詳解
EventBus的核心是基于Streams。它允許偵聽器訂閱事件并允許發(fā)布者觸發(fā)事件,使得不同組件的數(shù)據(jù)不需要一層層傳遞,可以直接通過EventBus實現(xiàn)跨組件通訊2023-04-04

