升级到androidX后崩溃
Crash after upgrade to androidX
我正在使用 BottomNavigationViewEx 库,并且我在我的项目中升级了 androidX。
BottomNavigationViewEx navigation = findViewById(R.id.navigation);
Logger.d(TAG, "navigation == null " + (navigation == null));
if (navigation != null) {
navigation.setCurrentItem(2); // Line 170: This make crash
navigation.setOnNavigationItemSelectedListener(mOnNavigationItemSelectedListener);
navigation.setTextVisibility(false);
navigation.enableAnimation(false);
navigation.enableShiftingMode(false);
navigation.enableItemShiftingMode(false);
int iconSize = 36;
navigation.setItemHeight(BottomNavigationViewEx.dp2px(this, iconSize + 16));
navigation.setIconSize(iconSize, iconSize);
}
它生成以下错误日志,然后崩溃。
我该如何解决这个问题?
java.lang.NoSuchFieldException: No field mMenuView in class Lcom/google/android/material/bottomnavigation/BottomNavigationView; (declaration of 'com.google.android.material.bottomnavigation.BottomNavigationView' appears in /data/app/com.calm_health.research-2/base.apk)
at java.lang.Class.getDeclaredField(Native Method)
at com.ittianyu.bottomnavigationviewex.BottomNavigationViewEx.getField(BottomNavigationViewEx.java:802)
at com.ittianyu.bottomnavigationviewex.BottomNavigationViewEx.getBottomNavigationMenuView(BottomNavigationViewEx.java:552)
at com.ittianyu.bottomnavigationviewex.BottomNavigationViewEx.setCurrentItem(BottomNavigationViewEx.java:511)
at sports.calm_health.com.researcher.MainActivity.onCreate(MainActivity.java:170)
将以下代码放入 gradle.properties
个文件中。
android.useAndroidX=true
android.enableJetifier=true
这个library没有更新,使用旧的classandroid.support.design.widget.BottomNavigationView
[=22=的反射 ].
表示库正在寻找旧支持设计库提供的class中的私有字段和方法。使用 material 组件库(androidx 需要它),这些字段和方法可能会有所不同,或者将来可能会发生变化。
正如您可以检查错误,库正在寻找 mMenuView
中不存在的 BottomNavigationView
.
java.lang.NoSuchFieldException: No field mMenuView in class Lcom/google/android/material/bottomnavigation/BottomNavigationView; (declaration of 'com.google.android.material.bottomnavigation.BottomNavigationView' appears in /data/app/com.calm_health.research-2/base.apk) at java.lang.Class.getDeclaredField(Native Method) at
https://github.com/ittianyu/BottomNavigationViewEx/issues/126
@Giddy Naya 说,这就是我的回答
我正在使用 BottomNavigationViewEx 库,并且我在我的项目中升级了 androidX。
BottomNavigationViewEx navigation = findViewById(R.id.navigation);
Logger.d(TAG, "navigation == null " + (navigation == null));
if (navigation != null) {
navigation.setCurrentItem(2); // Line 170: This make crash
navigation.setOnNavigationItemSelectedListener(mOnNavigationItemSelectedListener);
navigation.setTextVisibility(false);
navigation.enableAnimation(false);
navigation.enableShiftingMode(false);
navigation.enableItemShiftingMode(false);
int iconSize = 36;
navigation.setItemHeight(BottomNavigationViewEx.dp2px(this, iconSize + 16));
navigation.setIconSize(iconSize, iconSize);
}
它生成以下错误日志,然后崩溃。
我该如何解决这个问题?
java.lang.NoSuchFieldException: No field mMenuView in class Lcom/google/android/material/bottomnavigation/BottomNavigationView; (declaration of 'com.google.android.material.bottomnavigation.BottomNavigationView' appears in /data/app/com.calm_health.research-2/base.apk) at java.lang.Class.getDeclaredField(Native Method) at com.ittianyu.bottomnavigationviewex.BottomNavigationViewEx.getField(BottomNavigationViewEx.java:802) at com.ittianyu.bottomnavigationviewex.BottomNavigationViewEx.getBottomNavigationMenuView(BottomNavigationViewEx.java:552) at com.ittianyu.bottomnavigationviewex.BottomNavigationViewEx.setCurrentItem(BottomNavigationViewEx.java:511) at sports.calm_health.com.researcher.MainActivity.onCreate(MainActivity.java:170)
将以下代码放入 gradle.properties
个文件中。
android.useAndroidX=true
android.enableJetifier=true
这个library没有更新,使用旧的classandroid.support.design.widget.BottomNavigationView
[=22=的反射 ].
表示库正在寻找旧支持设计库提供的class中的私有字段和方法。使用 material 组件库(androidx 需要它),这些字段和方法可能会有所不同,或者将来可能会发生变化。
正如您可以检查错误,库正在寻找 mMenuView
中不存在的 BottomNavigationView
.
java.lang.NoSuchFieldException: No field mMenuView in class Lcom/google/android/material/bottomnavigation/BottomNavigationView; (declaration of 'com.google.android.material.bottomnavigation.BottomNavigationView' appears in /data/app/com.calm_health.research-2/base.apk) at java.lang.Class.getDeclaredField(Native Method) at
https://github.com/ittianyu/BottomNavigationViewEx/issues/126
@Giddy Naya 说,这就是我的回答