Начиная с сегодняшнего дня, когда я пытаюсь создать свое приложение для Android Kotlin, в моей Gradle сборке
меня встретила следующая ошибка:Error:cannot access Baz
bad class file: /Users/me/projects/site/android/app/build/tmp/kapt/debug/classFileStubs/com/company/foo/Bar$Baz.class
bad RuntimeInvisibleParameterAnnotations attribute: Baz(FragmentManager)
Please remove or make sure it appears in the correct subdirectory of the classpath.
Он указывает на внутренний класс Baz, который расширяет android.support.v4.app.FragmentStatePagerAdapter. Я могу временно обойти ошибку, комментируя класс и любые ссылки на него во внешнем классе и перестраивая. Ошибка уходит, но, очевидно, класс больше не существует, и другие вещи ломаются во время выполнения. Затем, если я раскомментирую его и построю, он будет работать для нескольких сборок. Затем возвращается ошибка. Промыть и повторить. Я думаю, что закрытие эмулятора Genymotion может вызвать его.
Кто-нибудь еще сталкивается с этим или имеет какие-то идеи?
Вот код нарушения:
class Bar : Fragment() {
@Inject
lateinit var api:ApiRequester
var data : ArrayList<Data> = ArrayList()
override fun onCreateView(inflater: LayoutInflater?, container: ViewGroup?, savedInstanceState: Bundle?): View? {
//[...] view creation code
//[...] data population code
viewPager.adapter = Baz(childFragmentManager)
//[...] more view creation code
}
inner class Baz(fm:FragmentManager) : FragmentStatePagerAdapter(fm) {
override fun getCount(): Int {
return data.count()
}
override fun getItem(position: Int): Fragment? {
var jf = FooFragment()
var bundle = Bundle()
bundle.putParcelable("data", data[position])
jf.arguments = bundle
return jf
}
}
EDIT: Извинения, Baz расширяет FragmentStatePagerAdapter, а не фрагмент, как я изначально заявил. Я использую Dagger2, который может полностью иметь эффект здесь.