我正在使用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:类Lcom / google / android / material / bottomnavigation / BottomNavigationView中没有字段mMenuView; (“ com.google.android.material.bottomnavigation.BottomNavigationView”的声明显示在/data/app/com.calm_health.research-2/base.apk中) 在java.lang.Class.getDeclaredField(本地方法) 在com.ittianyu.bottomnavigationviewex.BottomNavigationViewEx.getField(BottomNavigationViewEx.java:802)处 在com.ittianyu.bottomnavigationviewex.BottomNavigationViewEx.getBottomNavigationMenuView(BottomNavigationViewEx.java:552)处 在com.ittianyu.bottomnavigationviewex.BottomNavigationViewEx.setCurrentItem(BottomNavigationViewEx.java:511)处 在sports.calm_health.com.researcher.MainActivity.onCreate(MainActivity.java:170)
答案 0 :(得分:0)
此library未更新,并且对旧类 android.support.design.widget.BottomNavigationView
使用反射。
这意味着该库正在旧的支持设计库提供的类中寻找私有字段和方法。借助材料组件库(androidx要求),这些字段和方法可能会有所不同,或者将来可能会更改。
正如您可以检查到的错误一样,库正在寻找mMenuView
中不存在的BottomNavigationView
。
java.lang.NoSuchFieldException:类Lcom / google / android / material / bottomnavigation / BottomNavigationView中没有字段mMenuView; (“ com.google.android.material.bottomnavigation.BottomNavigationView”的声明出现在/data/app/com.calm_health.research-2/base.apk中),位于java.lang.Class.getDeclaredField(本机方法),位于>
答案 1 :(得分:0)
https://github.com/ittianyu/BottomNavigationViewEx/issues/126
@Giddy Naya说,这是我的答案
答案 2 :(得分:-1)
将以下代码放入gradle.properties
文件中。
android.useAndroidX=true
android.enableJetifier=true