Ошибка при надувании нижнего вида навигации, даже если bottom_navigation.xml правильный - PullRequest
0 голосов
/ 28 сентября 2019

Я получаю эту ошибку, хотя мой 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

Ответы [ 2 ]

1 голос
/ 28 сентября 2019

Вы подозреваете, что проблема связана с иконками, поэтому вы пытались удалить их?
Если вы внимательно посмотрите в своих журналах, вы увидите

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 байт превышает 10 МБ.Кажется слишком большим для нескольких значков.
Попробуйте изменить размеры нарисованных изображений. Я сомневаюсь, что они вам нужны, чтобы быть такими большими.

0 голосов
/ 28 сентября 2019

Как видно, ошибка нехватки памяти.Это связано с одним из значков в меню, которое вы прикрепили.

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

Изображение слишком большого размера - 10015740 байт - это 9,56 МБ, что очень много для значка.

Пожалуйста, попробуйте уменьшить размер значка.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...