即使 bottom_navigation.xml 是正确的,但在展开底部导航视图时出错

Error when inflating Bottom Navigation View even though the bottom_navigation.xml is right

尽管我的 bottom_navigation.xml 是正确的,但我还是收到了这个错误。不知道是不是图标

这是我的MainActivity.java。我输入了所有需要的内容。

     @Override
        protected void onCreate(Bundle savedInstanceState) {
            super.onCreate(savedInstanceState);
            setContentView(R.layout.activity_main_user);

            BottomNavigationView bottomNavigationView = findViewById(R.id.bot_nav);

            bottomNavigationView.setOnNavigationItemSelectedListener(new BottomNavigationView.OnNavigationItemSelectedListener() {
                @Override
                public boolean onNavigationItemSelected(@NonNull MenuItem menuItem) {
                    int id = menuItem.getItemId();

                    if (id== R.id.nav_home){
                    }
                    if (id== R.id.nav_account){
                    }
                    if (id== R.id.nav_search){
                    }
                    if (id== R.id.nav_settings){
                    }
                    return true;
                }
            });
           bottomNavigationView.setSelectedItemId(R.id.nav_home);
        }

        }

这是我的activity_main_user.xml。每当我删除 app:menu="@menu/bottom_navigation" 时,Logcat.

中没有显示任何错误
     <com.google.android.material.bottomnavigation.BottomNavigationView
        android:id="@+id/bot_nav"
        android:layout_width="match_parent"
        android:layout_height="70dp"
        android:layout_alignParentBottom="true"
        android:background="#B9B9B9"
        android:backgroundTint="#1B000000"
        android:clipChildren="false"
        app:itemHorizontalTranslationEnabled="false"
        app:itemTextColor="#000000"
        app:menu="@menu/bottom_navigation" />

这是我的bottom_navigator.xml

    <?xml version="1.0" encoding="utf-8"?>
    <menu xmlns:android="http://schemas.android.com/apk/res/android">
        <item
            android:id="@+id/nav_home"
            android:icon="@mipmap/homeicon_ec"
            android:title="Home" />
        <item
            android:id="@+id/nav_search"
            android:icon="@mipmap/search_bottom_nav"
            android:title="Search" />
        <item
            android:id="@+id/nav_account"
            android:icon="@mipmap/ec_userlogo_bottom_nav_03"
            android:title="My Account" />
        <item
            android:id="@+id/nav_settings"
            android:icon="@mipmap/settings_bottom_nav"
            android:title="Settings" />
    </menu>

这是我在 Logcat,

中得到的
    java.lang.RuntimeException: Unable to start activity ComponentInfo{com.robihid.ecommerce.hci502/com.robihid.ecommerce.hci502.MainActivity}: android.view.InflateException: Binary XML file line #11: Binary XML file line #11: Error inflating class com.google.android.material.bottomnavigation.BottomNavigationView
            at android.app.ActivityThread.performLaunchActivity(ActivityThread.java:2927)
            at android.app.ActivityThread.handleLaunchActivity(ActivityThread.java:2988)
            at android.app.ActivityThread.-wrap14(ActivityThread.java)
            at android.app.ActivityThread$H.handleMessage(ActivityThread.java:1631)
            at android.os.Handler.dispatchMessage(Handler.java:102)
            at android.os.Looper.loop(Looper.java:154)
            at android.app.ActivityThread.main(ActivityThread.java:6682)
            at java.lang.reflect.Method.invoke(Native Method)
            at com.android.internal.os.ZygoteInit$MethodAndArgsCaller.run(ZygoteInit.java:1520)
            at com.android.internal.os.ZygoteInit.main(ZygoteInit.java:1410)
         Caused by: android.view.InflateException: Binary XML file line #11: Binary XML file line #11: Error inflating class com.google.android.material.bottomnavigation.BottomNavigationView
         Caused by: android.view.InflateException: Binary XML file line #11: Error inflating class com.google.android.material.bottomnavigation.BottomNavigationView
         Caused by: java.lang.reflect.InvocationTargetException
            at java.lang.reflect.Constructor.newInstance0(Native Method)
            at java.lang.reflect.Constructor.newInstance(Constructor.java:430)
            at android.view.LayoutInflater.createView(LayoutInflater.java:652)
            at android.view.LayoutInflater.createViewFromTag(LayoutInflater.java:794)
            at android.view.LayoutInflater.createViewFromTag(LayoutInflater.java:734)
            at android.view.LayoutInflater.rInflate(LayoutInflater.java:865)
            at android.view.LayoutInflater.rInflateChildren(LayoutInflater.java:828)
            at android.view.LayoutInflater.inflate(LayoutInflater.java:525)
            at android.view.LayoutInflater.inflate(LayoutInflater.java:427)
            at android.view.LayoutInflater.inflate(LayoutInflater.java:378)
            at androidx.appcompat.app.AppCompatDelegateImpl.setContentView(AppCompatDelegateImpl.java:555)
            at androidx.appcompat.app.AppCompatActivity.setContentView(AppCompatActivity.java:161)
            at com.robihid.ecommerce.hci502.MainActivity.onCreate(MainActivity.java:22)
            at android.app.Activity.performCreate(Activity.java:6942)
            at android.app.Instrumentation.callActivityOnCreate(Instrumentation.java:1126)
            at android.app.ActivityThread.performLaunchActivity(ActivityThread.java:2880)
            at android.app.ActivityThread.handleLaunchActivity(ActivityThread.java:2988)
            at android.app.ActivityThread.-wrap14(ActivityThread.java)
            at android.app.ActivityThread$H.handleMessage(ActivityThread.java:1631)
            at android.os.Handler.dispatchMessage(Handler.java:102)
            at android.os.Looper.loop(Looper.java:154)
            at android.app.ActivityThread.main(ActivityThread.java:6682)
            at java.lang.reflect.Method.invoke(Native Method)
            at com.android.internal.os.ZygoteInit$MethodAndArgsCaller.run(ZygoteInit.java:1520)
            at com.android.internal.os.ZygoteInit.main(ZygoteInit.java:1410)
         Caused by: java.lang.OutOfMemoryError: Failed to allocate a 10015740 byte allocation with 7465824 free bytes and 7MB until OOM
            at dalvik.system.VMRuntime.newNonMovableArray(Native Method)
            at android.graphics.BitmapFactory.nativeDecodeAsset(Native Method)
            at android.graphics.BitmapFactory.decodeStream(BitmapFactory.java:700)
            at android.graphics.BitmapFactory.decodeResourceStream(BitmapFactory.java:535)
            at android.graphics.drawable.Drawable.createFromResourceStream(Drawable.java:1179)
            at android.content.res.ResourcesImpl.loadDrawableForCookie(ResourcesImpl.java:770)
            at android.content.res.ResourcesImpl.loadDrawable(ResourcesImpl.java:621)
            at android.content.res.Resources.getDrawable(Resources.java:1640)
            at android.content.Context.getDrawable(Context.java:525)
    2019-09-28 23:07:18.783 23055-23055/com.robihid.ecommerce.hci502 E/AndroidRuntime:     at androidx.core.content.ContextCompat.getDrawable(ContextCompat.java:454)
            at androidx.appcompat.widget.ResourceManagerInternal.getDrawable(ResourceManagerInternal.java:144)
            at androidx.appcompat.widget.ResourceManagerInternal.getDrawable(ResourceManagerInternal.java:132)
            at androidx.appcompat.content.res.AppCompatResources.getDrawable(AppCompatResources.java:104)
            at androidx.appcompat.view.menu.MenuItemImpl.getIcon(MenuItemImpl.java:505)
            at com.google.android.material.bottomnavigation.BottomNavigationItemView.initialize(BottomNavigationItemView.java:105)
            at com.google.android.material.bottomnavigation.BottomNavigationMenuView.buildMenuView(BottomNavigationMenuView.java:523)
            at com.google.android.material.bottomnavigation.BottomNavigationPresenter.updateMenuView(BottomNavigationPresenter.java:62)
            at com.google.android.material.bottomnavigation.BottomNavigationView.inflateMenu(BottomNavigationView.java:254)
            at com.google.android.material.bottomnavigation.BottomNavigationView.<init>(BottomNavigationView.java:187)
            at com.google.android.material.bottomnavigation.BottomNavigationView.<init>(BottomNavigationView.java:114)
                ... 25 more

您怀疑问题与图标有关,那么您尝试删除它们了吗?
如果您仔细查看日志,您会看到

Caused by: java.lang.OutOfMemoryError: 
 Failed to allocate a 10015740 byte allocation with 7465824 free bytes and 7MB until OOM

然后我们发现问题出在

at android.content.Context.getDrawable(Context.java:525)

所以问题确实出在图标上。 10015740 字节超过 10MB。对于几个图标来说似乎太大了。
尝试调整可绘制图像的大小。我怀疑你需要它们那么大。

正如你所看到的,存在内存不足错误。 它与您附加的菜单中的一个图标有关。

     Caused by: java.lang.OutOfMemoryError: Failed to allocate a 10015740 byte allocation with 7465824 free bytes

图片太大了 - 10015740 字节是 9.56 MB,这对于一个图标来说太大了。

请尝试减小图标大小。