【发布时间】:2021-04-13 01:18:51
【问题描述】:
我是 Kotlin 的新手。我创建了一个空白活动,添加了一个 SeekBar,并且我能够覆盖它的方法以获得我想要的功能。但是,如果我创建一个选项卡式活动,则在使用相同的代码时我无法这样做。我无法弄清楚如何访问片段中的项目。
我修改了我的 gradle 构建以包含 id 'kotlin-android-extensions'
我在 fragment_main.xml 中添加了 SeekBar 和 TextView
<SeekBar
android:id="@+id/strandsSpeed"
android:layout_width="300dp"
android:layout_height="wrap_content"
android:min="0"
android:max="1023"
android:scaleX="1.5"
android:scaleY="1.5"
app:layout_constraintBottom_toBottomOf="parent"
app:layout_constraintEnd_toEndOf="parent"
app:layout_constraintStart_toStartOf="parent"
app:layout_constraintTop_toTopOf="parent" />
<TextView
android:id="@+id/textView"
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:layout_marginTop="32dp"
android:text="TextView"
android:textSize="36sp"
app:layout_constraintTop_toBottomOf="@+id/strandsSpeed"
tools:layout_editor_absoluteX="173dp" />
我在 PlaceholderFragment.kt 中修改了 onCreate()
override fun onCreate(savedInstanceState: Bundle?) {
super.onCreate(savedInstanceState)
strandsSpeed?.setOnSeekBarChangeListener(object: SeekBar.OnSeekBarChangeListener {
override fun onProgressChanged(strandsSpeed: SeekBar, progress: Int, fromUser: Boolean) {}
override fun onStartTrackingTouch(strandsSpeed: SeekBar) {}
override fun onStopTrackingTouch(strandsSpeed: SeekBar) {
textView.text = getString(R.string.test)
}
})
pageViewModel = ViewModelProvider(this).get(PageViewModel::class.java).apply {
setIndex(arguments?.getInt(ARG_SECTION_NUMBER) ?: 1)
}
}
我在 MainActivity.kt 中尝试了相同的代码。没有结果。我还在 MainActivity.kt 中尝试了敬酒。没有结果。没有片段,代码可以正常工作。覆盖 onProgressChanged() 时也没有结果。我的猜测是由于 strandsSpeed 和 textView 当前位于片段中。
【问题讨论】:
标签: android kotlin android-fragments