我有一个带有多个进度条的视图。当我切换到最后一个标签(标签4)并且我回来时,单个进度条不会保持它们的值。[基本上当主标签不可见并再次显示时]。< / p>
进度条放在Fragment内部的LinearLayout内。看起来像Youtube应用程序。在主页上,我有5个进度条。 我第一次设置进度时,所有进度条值看起来都很完美。 个别进度条显示各自的值。
然而,当我切换到标签4(不在图片中)时,我回来了,所有进度条的值都设置为最后一个进度条的值。见下图。
我通过使用TextBox删除进度条进行检查,该值按照设置保持不变。 我已将最大值添加到进度条,使用方法1. setProgress,2。incrementProgressBy,没有改进。
由于文本框行为正常,我无法弄清楚我的问题是否有帮助。
PS:在android Fragment(tab)中,当它不可见时被重新创建并带来可见性。为了避免这种情况,我在onCreateview中限制了它,以保留最后创建的rootview。
答案 0 :(得分:2)
你现在可能已经解决了这个问题,但是如果有其他人在同一个问题上访问此页面:我遇到了同样的问题,标签容器视图(ViewPager)中的片段中存在多个进度条,并且所有这些都显示了切换选项卡后的相同进度值(最后一组)。我通过在片段的onResume
而不是onCreateView
中设置进度值来解决它。
答案 1 :(得分:1)
我在ViewPager中遇到了2个progressBars的相同问题,并通过为每个progressBar使用唯一的drawable实例进行修复:
这会在progressBar上显示错误的值:
val progressDrawable = ContextCompat.getDrawable(it, R.drawable.progress_bar_colors)
mBinding.firstProgressBar.progressDrawable = progressDrawable
mBinding.secondProgressBar.progressDrawable = progressDrawable
这解决了这个问题:
mBinding.firstProgressBar.progressDrawable = ContextCompat.getDrawable(it, R.drawable.progress_bar_colors)
mBinding.secondProgressBar.progressDrawable = ContextCompat.getDrawable(it, R.drawable.progress_bar_colors)
我希望它可以帮到你
答案 2 :(得分:-1)
有一个可接受的答案,但是我遇到了同样的问题,在不同的片段和回收者视图中有多个进度条。我的问题与观察到的Android进度栏错误有关,该错误并不总是更新进度条(请参见此处的已接受答案:android progressBar does not update progress view/drawable)
就我而言,我有一个自定义的进度栏,并添加了这些方法来解决此错误。作为开发人员,我们不得不经常解决这一难题。
fun setProgressSafely(progress: Int) {
setProgress(progress + 1)
setProgress(progress)
}
fun setMaxSafely(max: Int) {
setMax(max + 1)
setMax(max)
}