我在片段中使用Seekbar
並需要將Seekbar
移動到不同的位置。但是,setProgress(xxx)
不起作用。使用SeekBar和setProgress不會改變seekBar位置
如何以編程方式觸發此方法的Seekbar
:public void onProgressChanged(SeekBar seekBar, int progress, boolean fromUser)
?手動移動Seekbar
可以正常工作。
我在片段中使用Seekbar
並需要將Seekbar
移動到不同的位置。但是,setProgress(xxx)
不起作用。使用SeekBar和setProgress不會改變seekBar位置
如何以編程方式觸發此方法的Seekbar
:public void onProgressChanged(SeekBar seekBar, int progress, boolean fromUser)
?手動移動Seekbar
可以正常工作。
SeekBar.setProgress()
應該工作得很好。你確定你的代碼在UI線程上執行嗎?如果沒有,那麼這將是明顯的解釋。檢查示例中的API文檔的進度
https://developer.android.com/reference/android/widget/ProgressBar.html
在那裏,他們展示如何把執行回主線程。
我添加此答案,因爲這可以幫助未來某人。
就我而言,我還認爲setProgress工作不正常,但這是我的錯誤。
increaseIncomeSeekBar.setProgress(progress);
increaseIncomeSeekBar.setMax(maxProgress);
對於信息的進步和maxProgress等於2000和12000,但顯示的搜索欄的時候,好像進度在0,因此無法正常工作。
你必須意識到這一點,這是非常合理的,當你知道它:
這是ProgressBar中的Bug!
如果再次傳遞相同的值,setProgress(...)
似乎不會觸發drawable
上的更新。但它在setMax期間也沒有觸發。所以缺少更新。
爲了解決這個問題,我只是在做每次更新前bar.setProgress(0)
......這僅僅是一個解決辦法,但預期它爲我工作:
bar.setProgress(0); // call these two methods before setting progress.
bar.setMax(20);
bar.setProgress(20);
第二個選項。
mSeekBar.post(new Runnable() {
@Override
public void run() {
mSeekBar.setProgress(percentOfFullVolume);
}
});
它也可能適用於某人。
嘗試先設置最大值,然後設置進度。
Husnain Iqbal你可以使用postDelayed方法的第二個方法,並將延遲時間作爲100,然後它將更快地工作。 – Nepster
它不適用於我:( –
我得到了解決方案:)通過在onProgressChanged()中調用seekBar.setProgress(progress)並在setOnSeekBarChangeListener中的onStopTrackingTouch()中調用其餘方法。謝謝 –
我爲這個主題添加了一條評論,因爲它發生在我身上,花了我幾小時才弄清楚問題出在哪裏。該錯誤仍然有效,並且setProgress()方法有時無法正常工作。
我有提交和替換片段和發送每個片段的束內部的搜索欄值的MainActivity。用戶更改Seekbar的值,並將其進度放入包。然後,當用戶切換片段時,新的獲得SeekBar進度。
它可以很好地用這種方式傳輸,而且我的進度變量在第二個片段上總是有正確的值。當我使用setProgress(theProgressValueTransmitted)方法時出現問題。這個設置我的SeekBar只有在我第一次更換第一個片段時才進展。在那之後,它不會改變它的進展的價值仍然是正確的。
我用:
int seekBarProgress;
Bundle bundle = this.getArguments();
if (bundle != null) {
seekBarProgress = bundle.getInt("seekBarProgress");
mySeekBar.post(new Runnable() {
@Override
public void run() {
eventListTimeSeekBar.setProgress(seekBarProgress);
}
});
}
這是我可以使這項工作的唯一途徑。希望它可以幫助有同樣問題的人。這篇文章已經超過4年了,我甚至都不知道這個bug是如何報道的,因爲它已經被報道了。
感謝您的回覆。我沒有使用線程,所以我不確定它是否在UI線程上執行。我會研究它。 – sowens