多个进度条进度值不正确 android

Multiple progressbar progress value incorrect android

我有一个包含多个进度的视图 bars.Individual 当我切换到最后一个选项卡(选项卡 4)并返回时,进度条不会保留它们的值。[基本上当主页选项卡不可见并显示时再次]。

进度条放置在 Fragment 中托管的 LinearLayout 中。看起来像 Youtube 应用程序。在主页中,我有 5 个进度条。 当我第一次设置进度时,所有进度条值看起来都很完美。 个人进度条显示的是他们自己的个人价值。

但是,当我切换到选项卡 4(图中未显示)时,我返回时,所有进度条的值都设置为最后一个进度条的值。见下图。

我通过使用 TextBox 删除进度条进行检查,该值按照设置保留。 我已将最大值添加到进度条,使用方法 1.setProgress、2.incrementProgressBy,没有改进。

由于文本框行为正确,我无法解决我的问题,请帮助。

PS:在 android 片段(选项卡)在其不可见时被重新创建并带到 visibility.to 避免这种情况我在 onCreateview 中进行了限制以保留最后创建的根视图。

你现在可能已经解决了这个问题,但如果其他人遇到同样的问题进入这个页面:我有同样的问题,标签式容器视图 (ViewPager) 中片段中的多个进度条,以及所有这些在选项卡之间切换后显示相同的进度值(最后一组)。我通过在片段的 onResume 而不是 onCreateView.

中设置进度值来解决它

我对 ViewPager 中的 2 个 progressBars 有同样的问题,并通过为每个 progressBar 使用唯一的 drawable 实例来解决:

这在进度条上显示了错误的值:

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)

希望对你有帮助

有一个可以接受的答案,但我 运行 遇到了同样的问题,在不同的片段和回收站视图中有多个进度条。我的问题与观察到的 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)
}