如何从动态特性AndroidKotlin获取片段实例
我正在尝试为最喜欢的猫实现动态特性特性 我正在使用匕首柄进行依赖项注入,现在我在尝试实例化片段时遇到了这样的错误。 这就是我将在寻呼机中使用该片段的地方如何从动态特性AndroidKotlin获取片段实例,android,kotlin,dagger,dagger-hilt,modularization,Android,Kotlin,Dagger,Dagger Hilt,Modularization,我正在尝试为最喜欢的猫实现动态特性特性 我正在使用匕首柄进行依赖项注入,现在我在尝试实例化片段时遇到了这样的错误。 这就是我将在寻呼机中使用该片段的地方 class SectionsPagerAdapter(private val mContext: Context, fm: FragmentManager) : FragmentPagerAdapter(fm, BEHAVIOR_RESUME_ONLY_CURRENT_FRAGMENT) { companion object { @
class SectionsPagerAdapter(private val mContext: Context, fm: FragmentManager) :
FragmentPagerAdapter(fm, BEHAVIOR_RESUME_ONLY_CURRENT_FRAGMENT) {
companion object {
@StringRes
private val TAB_TITLES = intArrayOf(
R.string.Cats,
R.string.Favourite
)
}
override fun getItem(position: Int): Fragment =
when (position) {
0 -> CatsFragment()
1 -> instantiateFragment(className)
else -> Fragment()
}
override fun getPageTitle(position: Int): CharSequence =
mContext.resources.getString(TAB_TITLES[position])
override fun getCount(): Int = TAB_TITLES.size
private val className: String
get() = "com.zeekands.catsapp.favourite.ui.favourite.FavouriteFragment"
private fun instantiateFragment(className: String): Fragment {
return Class.forName(className).newInstance() as Fragment
}
}
最喜欢的片段类
@AndroidEntryPoint
类FavoriteFragment:Fragment(){
private val viewModel:FavoriteViewModel by viewModels()
私有lateinit变量绑定:FavoriteFragmentBinding
私有lateinit变量FavoriteAdapter:CatAdapter
覆盖创建视图(
充气器:布局充气器,容器:视图组?,
savedInstanceState:捆绑?
):查看{
绑定=收藏夹碎片绑定。充气(充气机、容器、假)
返回binding.root
}
覆盖已创建的视图(视图:视图,保存状态:捆绑?){
super.onViewCreated(视图,savedInstanceState)
集合列表()
带(binding.rvCatsFave){
layoutManager=LinearLayoutManager(上下文)
setHasFixedSize(真)
适配器=首选适配器
}
FavoriteAdapter.onItemClick={selectedData->
val intent=intent(activity,DetailActivity::class.java)
intent.putExtra(DetailActivity.EXTRA\u CATS,selectedData)
星触觉(意图)
}
}
私人娱乐设置列表(){
viewModel.GetFavoriteCats().observe(viewLifecycleOwner,catObserver)
}
private val catObserver=观察者{cat->
if(cat.isNullOrEmpty()){
binding.progressBar.visibility=View.GONE
binding.notFoundText.visibility=View.VISIBLE
}否则{
binding.progressBar.visibility=View.GONE
binding.notFoundText.visibility=View.GONE
}
FavoriteAdapter.setData(cat)
}
}
private val viewModel: FavoriteViewModel by viewModels()
private lateinit var binding: FavouriteFragmentBinding
private lateinit var favouriteAdapter: CatAdapter
override fun onCreateView(
inflater: LayoutInflater, container: ViewGroup?,
savedInstanceState: Bundle?
): View {
binding = FavouriteFragmentBinding.inflate(inflater, container, false)
return binding.root
}
override fun onViewCreated(view: View, savedInstanceState: Bundle?) {
super.onViewCreated(view, savedInstanceState)
setList()
with(binding.rvCatsFave) {
layoutManager = LinearLayoutManager(context)
setHasFixedSize(true)
adapter = favouriteAdapter
}
favouriteAdapter.onItemClick = { selectedData ->
val intent = Intent(activity, DetailActivity::class.java)
intent.putExtra(DetailActivity.EXTRA_CATS, selectedData)
startActivity(intent)
}
}
private fun setList() {
viewModel.getFavouriteCats().observe(viewLifecycleOwner, catObserver)
}
private val catObserver = Observer<List<Cat>> { cat ->
if (cat.isNullOrEmpty()){
binding.progressBar.visibility = View.GONE
binding.notFoundText.visibility = View.VISIBLE
} else {
binding.progressBar.visibility = View.GONE
binding.notFoundText.visibility = View.GONE
}
favouriteAdapter.setData(cat)
}