从今天开始,当我尝试构建我的Kotlin Android应用程序时,我在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
}
}
编辑:道歉,Baz扩展了FragmentStatePagerAdapter,而不像我最初所说的那样扩展Fragment。我正在使用Dagger2,这可能会产生影响。
答案 0 :(得分:2)