升级至androidX

时间:2019-11-28 08:46:54

标签: android navigation-drawer

我正在使用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)

3 个答案:

答案 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)

答案 2 :(得分:-1)

将以下代码放入gradle.properties文件中。

android.useAndroidX=true android.enableJetifier=true