我在努力实现一个简单的任务:我需要一个随机数时,按下按钮,当屏幕旋转,数字和滚动位置被保留。但由于某种原因,我无法实现这个功能,滚动位置没有保存。会是什么原因呢?
class MainActivity : AppCompatActivity() {
override fun onCreate(savedInstanceState: Bundle?) {
super.onCreate(savedInstanceState)
setContentView(R.layout.activity_main)
if (savedInstanceState != null){
val scrollPosition = savedInstanceState.getInt("scrollPosition")
val scrollView = findViewById<ScrollView>(R.id.scrollView)
scrollView.post { scrollView.scrollTo(0, scrollPosition) }
val count = savedInstanceState.getInt("viewsCount")
for (i in 0 until count)
addTextView()
}
}
fun buttonAddClick(view: View) {
addTextView()
}
private var viewsCount = 0
fun addTextView() {
viewsCount = rand(1..100)
val textView = TextView(this)
textView.text = viewsCount.toString()
textView.textSize = 20f
val container = findViewById<LinearLayout>(R.id.innerConteiner)
container.addView(textView)
}
override fun onSaveInstanceState(outState: Bundle) {
super.onSaveInstanceState(outState)
outState.putInt("viewsCount", viewsCount)
outState.putInt("scrollposition", findViewById<ScrollView>(R.id.scrollView).scrollY)
}
fun rand(range: IntRange): Int {
require(range.first <= range.last) { "Illegal Argument" }
return Random(System.nanoTime()).nextInt(range) + range.first
}
}
1条答案
按热度按时间4ktjp1zp1#
我没有检查代码,但我认为这是一个错字
检索时使用**“scrollPosition”**
但在保存时,您正在使用**“scrollposition”**