Недавно я столкнулся с таким странным поведением: в целом мое приложение работает и компилируется как обычно, но когда я пытаюсь создать экземпляр фрагмента, который содержит код, который передает ссылку на функцию встроенной функции расширения, которая принимает кросс-строку лямбда моего приложениявыдает java.lang.VerifyError.
Сначала я не знал точного источника проблемы, поэтому я следовал некоторым ответам по переполнению стека, очистил кеш и удалил папки сборки, он не сталПомогите.Итак, я попытался выделить проблему дальше и закомментировал свой код, пока не нашел точную строку, которая вызвала ошибку:
overview_button_details.click (viewModel::startDetailGroupActivity)
Реализация клика:
[1] inline fun View.click( crossinline listener: () -> Unit) = setOnClickListener { _ -> listener() }
Эта комбинация нене работает, но я обнаружил, что следующие комбинации работают
Либо используя:
overview_button_details.click { viewModel.startDetailGroupActivity() }
с [1].Или изменив функцию, чтобы она не была встроенной функцией и не принимала лямбду-строку:
fun View.click( listener: () -> Unit) = setOnClickListener { _ -> listener() }
Я запутался, потому что студия компилятора и андроида ничего не сказала мне, что эта функция [1] может вызватьошибка, ни трассировка стека мне не помогла:
java.lang.VerifyError: Verifier rejected class ________.NewFragment due to bad method void _______.NewFragment.onViewCreated(android.view.View, android.os.Bundle) (declaration of '_______.NewFragment' appears in /data/app/______-1/split_lib_slice_4_apk.apk)
at ________.main.MainViewModel.navigateOverview(MainViewModel.kt:93)
at ________.main.MainActivity$mOnNavigationItemSelectedListener$1.onNavigationItemSelected(MainActivity.kt:71)
at android.support.design.widget.BottomNavigationView$1.onMenuItemSelected(BottomNavigationView.java:182)
at android.support.v7.view.menu.MenuBuilder.dispatchMenuItemSelected(MenuBuilder.java:822)
at android.support.v7.view.menu.MenuItemImpl.invoke(MenuItemImpl.java:171)
at android.support.v7.view.menu.MenuBuilder.performItemAction(MenuBuilder.java:973)
at android.support.design.internal.BottomNavigationMenuView$1.onClick(BottomNavigationMenuView.java:95)
at android.view.View.performClick(View.java:5233)
at android.view.View$PerformClick.run(View.java:21211)
at android.os.Handler.handleCallback(Handler.java:739)
at android.os.Handler.dispatchMessage(Handler.java:95)
at android.os.Looper.loop(Looper.java:148)
at android.app.ActivityThread.main(ActivityThread.java:5539)
at java.lang.reflect.Method.invoke(Native Method)
at com.android.internal.os.ZygoteInit$MethodAndArgsCaller.run(ZygoteInit.java:726)
at com.android.internal.os.ZygoteInit.main(ZygoteInit.java:616)
У меня недостаточно опыта с этим, поэтому Интересно, это ошибка или это моя вина?Если так, то где ошибка?