android - Kotlin 错误 : Dagger does not support inje

我在 kotlin Activity ViewPager 中使用,我希望在 Kotlin Fragment 中使用 Dagger 注入(inject)。我有错误:Dagger 不支持注入(inject)私有(private)字段。 在 Java Fragment 中, Dagger 注入(inject)工作。 为什么我不能在 kotlin faragment 中注入(inject) dagger ?

在我的 kotlin Activity 中

mPagerAdapter = object : FragmentPagerAdapter(supportFragmentManager) {

        private val mFragments = arrayOf(KotlinFragment(), JavaFragment())
        private val mFragmentNames = arrayOf(getString(R.string.cashdocuments), getString(R.string.action_absmysql))

        override fun getItem(position: Int): Fragment {
            return mFragments[position]
        }

        override fun getCount(): Int {
            return mFragments.size
        }

        override fun getPageTitle(position: Int): CharSequence {
            return mFragmentNames[position]
        }
    }

我的 kotlin fragment

class KotlinFragment : Fragment()  {


@Inject
internal var mSharedPreferences: SharedPreferences? = null

override fun onCreate(savedInstanceState: Bundle?) {
    super.onCreate(savedInstanceState)

    (activity.application as SamfantozziApp).dgaeacomponent().inject(this)

}

override fun onCreateView(inflater: LayoutInflater?, container: ViewGroup?,
                          savedInstanceState: Bundle?): View? {
    super.onCreateView(inflater, container, savedInstanceState)
    val rootView = inflater!!.inflate(R.layout.activity_absserver, container, false)

    return rootView
}

}

消息 gradle build

最佳答案

你错了:

    @Inject
internal var mSharedPreferences: SharedPreferences? = null

这看起来像您将 @Inject 注释添加到 KotlinFragment

请将其更改为这个,它会工作:

var mSharedPreferences: SharedPreferences? = null
        @Inject set

这里是文档的链接:https://kotlinlang.org/docs/reference/annotations.html

关于android - Kotlin 错误 : Dagger does not support injection into private fields,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/47187657/

相关文章:

kotlin - 在 Kotlin 中复制 map 最聪明的方法是什么?

android - 如何在 Kotlin 中获取当前的本地日期和时间

android - 使用 Retrofit 方法更具表现力

kotlin - 如何在 Kotlin 中定义非序数枚举?

android - 使用 Kotlin 组合整数标志的最佳方法?

kotlin - 为什么这个 Kotlin 方法有封闭的反引号?

android - 从 Activity Kotlin 中获取额外的字符串

kotlin - 传递 null 时,有没有办法在非可选参数上使用默认值?

android - 使用 Kotlin 关闭/隐藏 Android 软键盘

kotlin - 如何在一行上声明多个属性