Ошибка Kotlin: Кинжал не поддерживает инъекцию в частные поля

Я использую в kotlin активность ViewPager, и я хочу, чтобы в Kotlin Fragment использовалась инъекция кинжала. У меня есть Ошибка: Кинжал не поддерживает инъекцию в частные поля. В Java Fragment работает инъекция кинжала. Почему я не могу ввести кинжал в котлинскую дальность?

в моей котлинской деятельности

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] } } 

мой фрагмент котлина

 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

введите описание изображения здесь

Удалите internal модификатор. Для доступа к аннотированному полю кинггеру требуется, по крайней мере, пакетный доступ. internal модификатор Kotlin не является заменой модификатора доступа к частному доступу Java.

Подробное объяснение различий между модификаторами в Java и Kotlin относится к эпизоду фрагментированного подкаста № 101 – «Изучение Kotlin – модификаторы видимости, внутренний модификатор, модули» , а также официальные документы .

Вы определили приложение fun inject(fragment: KotlinFragment) в своем ApplicationComponent ? Потому что похоже, что ваше сообщение об ошибке говорит именно это.

EDIT: возможно, вы не предоставили SharedPreferences в своем модуле следующим образом:

 @Module public class AndroidModule { private final TimrApplication application; public AndroidModule(TimrApplication application) { this.application = application; } @Provides SharedPreferences provideSharedPreferences(){ return PreferenceManager.getDefaultSharedPreferences(application); } }