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



分析問(wèn)題
通過(guò)添加日志對(duì)SeekBar相關(guān)的方法的執(zhí)行情況進(jìn)行分析后,發(fā)現(xiàn)在對(duì)SeekBar設(shè)置監(jiān)聽
器后,第一次創(chuàng)建Fragment中的視圖中SeekBar中的監(jiān)聽方法:
public void onProgressChanged(SeekBar seekBar, int progress, boolean fromUser)
總會(huì)先執(zhí)行一次,而且該方法中的progress值仍為先前的值,進(jìn)度條UI也仍然是之前的進(jìn)度。 總之在數(shù)據(jù)同步的方面總有一些問(wèn)題。
解決方法
在Fragment中添加一個(gè)標(biāo)志位來(lái)判斷onProgressChanged是否是第一次執(zhí)行,若是第一次執(zhí)行,就在SeekBar中讀取viewModel中的值,并且在onProgressChanged方法中手動(dòng)更改進(jìn)度條:
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());
}
} -否則,就將進(jìn)度條的值讀取并更改ViewModel中的值。
到此這篇關(guān)于Android SeekBar在刷新使用中需要注意的問(wèn)題的文章就介紹到這了,更多相關(guān)Android SeekBar刷新內(nèi)容請(qǐng)搜索腳本之家以前的文章或繼續(xù)瀏覽下面的相關(guān)文章希望大家以后多多支持腳本之家!
- Android SeekBar控制視頻播放進(jìn)度實(shí)現(xiàn)過(guò)程講解
- Android?SeekBar充當(dāng)Progress實(shí)現(xiàn)兔兔進(jìn)度條Plus
- Android開發(fā)雙向滑動(dòng)選擇器范圍SeekBar實(shí)現(xiàn)
- Android開發(fā)自定義雙向SeekBar拖動(dòng)條控件
- Android開發(fā)手冊(cè)SeekBar拖動(dòng)條使用實(shí)例
- Android通過(guò)SeekBar調(diào)節(jié)布局背景顏色
- Android自定義SeekBar實(shí)現(xiàn)滑動(dòng)驗(yàn)證且不可點(diǎn)擊
- Android SeekBar實(shí)現(xiàn)平滑滾動(dòng)
相關(guān)文章
Android使用IntentService進(jìn)行apk更新示例代碼
這篇文章主要介紹了Android使用IntentService進(jìn)行apk更新示例代碼,小編覺(jué)得挺不錯(cuò)的,現(xiàn)在分享給大家,也給大家做個(gè)參考。一起跟隨小編過(guò)來(lái)看看吧2018-01-01
Android編程判斷手機(jī)上是否安裝了某個(gè)程序的方法
這篇文章主要介紹了Android編程判斷手機(jī)上是否安裝了某個(gè)程序的方法,涉及Android針對(duì)程序包的操作及進(jìn)程判斷的相關(guān)技巧,需要的朋友可以參考下2015-11-11
深入了解Android中GestureDetector的定義與使用
Android中的GestureDetector?可以使用?MotionEvents?檢測(cè)各種手勢(shì)和事件,非常的好用。本文將會(huì)通過(guò)幾個(gè)具體的例子來(lái)講解一下GestureDetector的具體使用方法,需要的可以參考一下2023-01-01
Android實(shí)現(xiàn)GridView中ImageView動(dòng)態(tài)變換的方法
這篇文章主要介紹了Android實(shí)現(xiàn)GridView中ImageView動(dòng)態(tài)變換的方法,以實(shí)例形式較為詳細(xì)的分析了GridView中ImageView動(dòng)態(tài)變換的頁(yè)面布局及功能實(shí)現(xiàn)相關(guān)技巧,需要的朋友可以參考下2015-10-10
Android批量插入數(shù)據(jù)到SQLite數(shù)據(jù)庫(kù)的方法
這篇文章主要為大家詳細(xì)介紹了Android批量插入數(shù)據(jù)到SQLite數(shù)據(jù)庫(kù)的方法,具有一定的參考價(jià)值,感興趣的小伙伴們可以參考一下2017-03-03
Android實(shí)現(xiàn)底部切換標(biāo)簽
這篇文章主要為大家詳細(xì)介紹了Android實(shí)現(xiàn)底部切換標(biāo)簽,嵌套Fragment,方便自定義布局,具有一定的參考價(jià)值,感興趣的小伙伴們可以參考一下2018-07-07
Android開發(fā)實(shí)現(xiàn)帶有反彈效果仿IOS反彈scrollview教程詳解
本文給大家分享android開發(fā)實(shí)現(xiàn)帶有反彈效果,模仿ios反彈scrollview詳細(xì)教程,本文介紹的非常詳細(xì),具有參考借鑒價(jià)值,感興趣的朋友一起看看吧2016-09-09
Android報(bào)錯(cuò)Error:Could not find com.android.tools.build:gradle
這篇文章主要介紹了Android Studio報(bào)錯(cuò)Error:Could not find com.android.tools.build:gradle:4.1解決辦法,碰到該問(wèn)題的同學(xué)快過(guò)來(lái)看看吧2021-08-08
詳解Android開發(fā)錄音和播放音頻的步驟(動(dòng)態(tài)獲取權(quán)限)
這篇文章主要介紹了詳解Android開發(fā)錄音和播放音頻的步驟(動(dòng)態(tài)獲取權(quán)限),文中通過(guò)示例代碼介紹的非常詳細(xì),對(duì)大家的學(xué)習(xí)或者工作具有一定的參考學(xué)習(xí)價(jià)值,需要的朋友們下面隨著小編來(lái)一起學(xué)習(xí)學(xué)習(xí)吧2019-08-08
Flutter事件監(jiān)聽與EventBus事件的應(yīng)用詳解
EventBus的核心是基于Streams。它允許偵聽器訂閱事件并允許發(fā)布者觸發(fā)事件,使得不同組件的數(shù)據(jù)不需要一層層傳遞,可以直接通過(guò)EventBus實(shí)現(xiàn)跨組件通訊2023-04-04

