当信安装置的定位器发生变化时,活动就会重新进行。 当时,在从这些活动中获取碎片功能时,要求“Context()”和要求“View()”即为无效,而“Model”则不是开始。
这是我的法典。
活动
var pager改编: NewPager改编? = null
fun initView(){
val vpContent = findViewById<ViewPager2>(R.id.vp_content)
val fragmentList = ArrayList<家长筹资>()
fragmentList.add(FristFragment())
fragmentList.add(SecondFragment())
fragmentList.add(ThirdFragment())
pager改编 = NewPager改编(fragmentList, supportFragmentManager, lifecycle)
vpContent.adapter = pager改编
val btnRefresh = findViewById<Button>(R.id.btn_scm_refresh)
btnRefresh.setOnClickListener {
(pager改编)!!.allRefreshPage()
}
}
改编
override fun getItemCount(): Int {
return fragmentList.size
}
override fun createFragment(position: Int): Fragment {
return fragmentList[position]
}
fun allRefreshPage(context: Context){
for(i in 0 until fragmentList.size){
fragmentList[i].refreshData()
}
}
家长筹资
abstract class 家长筹资 : Fragment() {
abstract fun refreshData()
}
童工
private lateinit var viewModel: NewViewModel
override fun onCreate(savedInstanceState: Bundle?) {
super.onCreate(savedInstanceState)
viewModel = ViewModelProvider(this, ViewModelFactory())[NewViewModel::class.java]
}
override fun refreshData() {
if(context == null || view == null) {
Log.w(TAG, "refreshData: have not context or view")
return
}
viewModel.initAppList(requireContext(), requireView())
}
为什么发生这种情况?
我怎么能确保失败?
是否有其他办法将它作为 fragment在活动中的职能?