Warning: file_get_contents(/data/phpspider/zhask/data//catemap/4/kotlin/3.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
如何从动态特性AndroidKotlin获取片段实例_Android_Kotlin_Dagger_Dagger Hilt_Modularization - Fatal编程技术网

如何从动态特性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)
}