NumberPicker 的值不会改变

Posted

技术标签:

【中文标题】NumberPicker 的值不会改变【英文标题】:The value of NumberPicker doesn't change 【发布时间】:2019-12-20 01:27:17 【问题描述】:

我是 android 和 Kotlin 的初学者。 我想从 NumberPicker 获取我设置为 displayValues 的字符串值。 我试过了,但它只返回 Int 数字。

经过一番搜索,我发现了一个问题Formatted value of NumberPicker disappears onClick,这可能是我的问题的解决方案。

但我是初学者,从未学习过 java,所以我无法将它应用到我的代码中。我需要您的帮助来确定我的代码是否正确,如果正确,我希望得到一个可以应用于 kotlin 的解决方案 谢谢!

    val pickers = arrayListOf(picker1,picker2,picker3,picker4,picker5,picker6,picker7)
    for (picker in pickers) 
        picker.displayedValues = arrayOf(
            "0", "30", "40", "50", "60", "1시간", "1시간 30분", "2시간", "2시간 30분", "3시간", "3시간 30분", "4시간",
            "4시간 30분", "5시간"
        )
        picker.minValue = 0
        picker.maxValue = 13
        picker.setFormatter  num -> picker.displayedValues[num] 

【问题讨论】:

【参考方案1】:

那里的答案对 Kotlin 的翻译是

// do this outside the loop because it doesn't depend on picker
val f = NumberPicker::class.java.getDeclaredField("mInputText")
f.setAccessible(true)

// inside the loop
val inputText = f.get(picker) as EditText
inputText.setFilters(arrayOf())

(它被 try-catch 包围,如果您愿意,您也可以在 Kotlin 中执行此操作,但特定的 catch 没有用;如果您这样做,它应该在 for 循环之外)。

【讨论】:

我醒来后检查了我的问题和你的答案,我发现我发布的链接是一个完全不同的问题。当然,答案并不能解决我的问题。看来是因为太累了,才犯了这个错误。对不起,谢谢。 我决定不直接获取字符串值,而是用其他方式处理Int值

以上是关于NumberPicker 的值不会改变的主要内容,如果未能解决你的问题,请参考以下文章

Android Numberpicker默认值没有出现

NumberPicker 在 setValue() 之后显示错误的值

更改 android numberpicker 分隔线颜色

Android numberpicker里的线可以改颜色吗

Android Numberpicker 小数

更改 NumberPicker 分隔线颜色