По какой-то причине, когда я использую findFragmentById () для ссылки на представление SeekBar, созданное с привязкой данных, он возвращает нулевой объект. Как я могу получить ссылку для этого представления, пожалуйста?
Это мой seekBar:
<?xml version="1.0" encoding="utf-8"?>
<layout
xmlns:android="http://schemas.android.com/apk/res/android"
xmlns:tools="http://schemas.android.com/tools">
<SeekBar
android:id="@+id/seekBar"
android:layout_width="match_parent"
android:layout_height="match_parent">
</SeekBar>
</layout>
Это мой класс:
open class UtilClass(activity: Activity) {
...
val seekBar = activity.findViewById<SeekBar>(R.id.seekBar)
..
}
Панель поиска завышенаиспользуя DataBindingUtil в своем собственном фрагменте:
class SeekBarFragment(): Fragment {
...
override fun onCreateView(
inflater: LayoutInflater,
container: ViewGroup?,
savedInstanceState: Bundle?
): View? {
val binding: SeekbarBinding = DataBindingUtil.inflate(inflater, R.layout.seekbar, container, false)
...
}
Здесь создается экземпляр UtilClass:
class MainActivity : AppCompatActivity() {
private lateinit var mUtilClass: UtilClass
....
override fun onCreate(savedInstanceState: Bundle?) {
super.onCreate(savedInstanceState)
mUtilClass = UtilClass(requireActivity())
retainInstance = true
var fm = fragmentManager
var fragment: Fragment? = fm!!.findFragmentById(R.id.seek_container)
if (fragment == null) {
fragment = SeekBarFragment.newInstance()
fm.beginTransaction()
.add(R.id.seek_container, fragment)
.commit()
}
}
Здесь создается привязка:
class SeekBarFragment: Fragment() {
companion object {
fun newInstance(): SeekBarFragment {
return SeekBarFragment()
}
}
override fun onCreate(savedInstanceState: Bundle?) {
super.onCreate(savedInstanceState)
super.onCreate(savedInstanceState)
}
override fun onCreateView(
inflater: LayoutInflater,
container: ViewGroup?,
savedInstanceState: Bundle?
): View? {
val binding: SeekbarBinding = DataBindingUtil.inflate(inflater, R.layout.seekbar, container, false)
...
}