Android SeekBar在刷新使用中需要注意的問(wèn)題
Android開(kāi)發(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)聽(tīng)
器后,第一次創(chuàng)建Fragment中的視圖中SeekBar中的監(jiān)聽(tīng)方法:
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開(kāi)發(fā)雙向滑動(dòng)選擇器范圍SeekBar實(shí)現(xiàn)
- Android開(kāi)發(fā)自定義雙向SeekBar拖動(dòng)條控件
- Android開(kāi)發(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)文章
ViewPager 與 Fragment相結(jié)合實(shí)現(xiàn)微信界面實(shí)例代碼
這篇文章主要介紹了ViewPager 與 Fragment相結(jié)合實(shí)現(xiàn)微信界面實(shí)例代碼的相關(guān)資料,需要的朋友可以參考下2016-07-07Android中實(shí)現(xiàn)ping功能的多種方法詳解
這篇文章主要介紹了Android中實(shí)現(xiàn)ping功能的多種方法詳解,本文通過(guò)實(shí)例代碼給大家介紹的非常詳細(xì),對(duì)大家的學(xué)習(xí)或工作具有一定的參考借鑒價(jià)值,需要的朋友可以參考下2020-03-03Android 6.0權(quán)限請(qǐng)求相關(guān)及權(quán)限分組方法
今天小編就為大家分享一篇Android 6.0權(quán)限請(qǐng)求相關(guān)及權(quán)限分組方法,具有很好的參考價(jià)值,希望對(duì)大家有所幫助。一起跟隨小編過(guò)來(lái)看看吧2018-08-08Android實(shí)現(xiàn)簡(jiǎn)易記事本
這篇文章主要為大家詳細(xì)介紹了Android實(shí)現(xiàn)簡(jiǎn)易記事本,具有一定的參考價(jià)值,感興趣的小伙伴們可以參考一下2017-12-12Android獲得當(dāng)前正在顯示的activity類(lèi)名的方法
這篇文章主要介紹了Android獲得當(dāng)前正在顯示的activity類(lèi)名的方法,分析了權(quán)限的修改與Java代碼的實(shí)現(xiàn)技巧,具有一定參考借鑒價(jià)值,需要的朋友可以參考下2015-01-01android中TabHost的圖標(biāo)(48×48)和文字疊加解決方法
開(kāi)發(fā)過(guò)程中,有時(shí)候圖標(biāo)稍微大點(diǎn),比如48×48的時(shí)候,文字就會(huì)和圖標(biāo)疊加起來(lái),遇到這種問(wèn)題我們?cè)撛鯓犹幚砟??本文將詳?xì)介紹希望對(duì)你有所幫助2013-01-01Android開(kāi)發(fā)學(xué)習(xí)筆記 淺談WebView
WebView(網(wǎng)絡(luò)視圖)能加載顯示網(wǎng)頁(yè),可以將其視為一個(gè)瀏覽器。它使用了WebKit渲染引擎加載顯示網(wǎng)頁(yè),實(shí)現(xiàn)WebView有以下兩種不同的方法2014-11-11Android開(kāi)發(fā)獲取重力加速度和磁場(chǎng)強(qiáng)度的方法
這篇文章主要介紹了Android開(kāi)發(fā)獲取重力加速度和磁場(chǎng)強(qiáng)度的方法,結(jié)合實(shí)例形式分析了Android通過(guò)重力傳感器與羅盤(pán)傳感器獲取重力加速度與磁場(chǎng)強(qiáng)度的方法,需要的朋友可以參考下2017-10-10Android中實(shí)現(xiàn)EditText圓角的方法
Android中實(shí)現(xiàn)EditText圓角的方法,需要的朋友可以參考一下2013-03-03