[英]findViewById() Returns Null View Created From Databinding
出於某種原因,當我使用 findFragmentById() 引用使用數據綁定創建的 SeekBar 視圖時,它返回 null object。 請問,我怎樣才能得到這個觀點的參考?
這是我的搜索欄:
<?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>
這是我的 class:
open class UtilClass(activity: Activity) {
...
val seekBar = activity.findViewById<SeekBar>(R.id.seekBar)
..
}
在它自己的 Fragment 中使用 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)
...
}
您應該指定父布局視圖。
override fun onCreateView(
inflater: LayoutInflater,
container: ViewGroup?,
savedInstanceState: Bundle?
): View {
var v: View =inflater.inflate(R.layout.seekbar, container, false)
var seekbar=v.findViewById(R.id.seekbar)
return v
}
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.