Мое приложение рушится, когда я запускаю его на своем телефоне, чтобы протестировать

#android #kotlin

Вопрос:

Недавно я начал разработку Kotlin и Android и хочу создать приложение, которое показывало бы рекламу по продаже автомобилей. Но, к сожалению, когда я запускаю это приложение на своем телефоне, оно сразу же выходит из строя. Таким образом, основная функция этого приложения-показать автомобили, которые продаются, и вы, как пользователь, сможете добавлять больше автомобилей в продажу и показывать их, а также бронировать автомобиль и показывать только зарезервированные автомобили. Вот мой код

 package com.example.autooglas

import androidx.appcompat.app.AppCompatActivity
import android.os.Bundle
import androidx.appcompat.app.ActionBar
import androidx.fragment.app.Fragment
import com.google.android.material.bottomnavigation.BottomNavigationView

class MainActivity : AppCompatActivity() {
    lateinit var toolbar: ActionBar
    private val mOnNavigationItemSelectedListener = BottomNavigationView.OnNavigationItemSelectedListener{ item ->
        when (item.itemId){
            R.id.navigation_oglasi -> {
                toolbar.title="Oglasi"
                val oglasiFragment=OglasiFragment.newInstance()
                openFragment(oglasiFragment)
                return@OnNavigationItemSelectedListener true

            }
            R.id.navigation_dodaj_oglas ->{
                toolbar.title = "Dodaj Oglas"
                val dodajOglas = DodajOglasFragment.newInstance()
                openFragment(dodajOglas)
                return@OnNavigationItemSelectedListener true
            }
        }
        false

    }

    private fun openFragment(fragment: Fragment) {
        val transaction = supportFragmentManager.beginTransaction()
        transaction.replace(R.id.container, fragment)
        transaction.addToBackStack(null)
        transaction.commit()
    }
    override fun onCreate(savedInstanceState: Bundle?) {
        super.onCreate(savedInstanceState)
        setContentView(R.layout.activity_main)
        toolbar = supportActionBar!!
        val bottomNavigationView:BottomNavigationView = findViewById(R.id.navigationView)
        bottomNavigationView.setOnNavigationItemSelectedListener ( mOnNavigationItemSelectedListener )
        openFragment(OglasiFragment.newInstance())
    }
}
 

activity_main.xml

 <?xml version="1.0" encoding="utf-8"?>
<androidx.constraintlayout.widget.ConstraintLayout xmlns:android="http://schemas.android.com/apk/res/android"
    xmlns:app="http://schemas.android.com/apk/res-auto"
    xmlns:tools="http://schemas.android.com/tools"
    android:layout_width="match_parent"
    android:layout_height="match_parent"
    tools:context=".MainActivity">

    <FrameLayout
        android:id="@ id/container"
        android:layout_width="match_parent"
        android:layout_height="match_parent"
        android:visibility="visible"
        tools:layout_editor_absoluteX="0dp"
        tools:layout_editor_absoluteY="37dp"
        tools:visibility="visible" />

    <com.google.android.material.bottomnavigation.BottomNavigationView
        android:id="@ id/navigationView"
        android:layout_width="0dp"
        android:layout_height="wrap_content"
        android:layout_marginEnd="0dp"
        android:layout_marginStart="0dp"
        android:background="?android:attr/windowBackground"
        app:layout_constraintBottom_toBottomOf="parent"
        app:layout_constraintLeft_toLeftOf="parent"
        app:layout_constraintRight_toRightOf="parent"
        app:menu="@menu/navigation"
        tools:ignore="MissingClass" />

</androidx.constraintlayout.widget.ConstraintLayout>

 

And her is my Logcat

 19119-19119/com.example.autooglas E/ample.autoogla: [qarth_debug:]  get PatchStore::createDisableExceptionQarthFile method fail.
19119-19119/com.example.autooglas E/AndroidRuntime: FATAL EXCEPTION: main
    Process: com.example.autooglas, PID: 19119
    java.lang.RuntimeException: Unable to start activity ComponentInfo{com.example.autooglas/com.example.autooglas.MainActivity}: android.view.InflateException: Binary XML file line #18: Binary XML file line #18: Error inflating class com.google.android.material.bottomnavigation.BottomNavigationView
        at android.app.ActivityThread.performLaunchActivity(ActivityThread.java:3430)
        at android.app.ActivityThread.handleLaunchActivity(ActivityThread.java:3614)
        at android.app.servertransaction.LaunchActivityItem.execute(LaunchActivityItem.java:86)
        at android.app.servertransaction.TransactionExecutor.executeCallbacks(TransactionExecutor.java:108)
        at android.app.servertransaction.TransactionExecutor.execute(TransactionExecutor.java:68)
        at android.app.ActivityThread$H.handleMessage(ActivityThread.java:2199)
        at android.os.Handler.dispatchMessage(Handler.java:112)
        at android.os.Looper.loop(Looper.java:216)
        at android.app.ActivityThread.main(ActivityThread.java:7625)
        at java.lang.reflect.Method.invoke(Native Method)
        at com.android.internal.os.RuntimeInit$MethodAndArgsCaller.run(RuntimeInit.java:524)
        at com.android.internal.os.ZygoteInit.main(ZygoteInit.java:987)
     Caused by: android.view.InflateException: Binary XML file line #18: Binary XML file line #18: Error inflating class com.google.android.material.bottomnavigation.BottomNavigationView
     Caused by: android.view.InflateException: Binary XML file line #18: 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:343)
        at android.view.LayoutInflater.createView(LayoutInflater.java:658)
        at android.view.LayoutInflater.createViewFromTag(LayoutInflater.java:801)
        at android.view.LayoutInflater.createViewFromTag(LayoutInflater.java:741)
        at android.view.LayoutInflater.rInflate(LayoutInflater.java:874)
        at android.view.LayoutInflater.rInflateChildren(LayoutInflater.java:835)
        at android.view.LayoutInflater.inflate(LayoutInflater.java:515)
        at android.view.LayoutInflater.inflate(LayoutInflater.java:423)
        at android.view.LayoutInflater.inflate(LayoutInflater.java:374)
        at androidx.appcompat.app.AppCompatDelegateImpl.setContentView(AppCompatDelegateImpl.java:696)
        at androidx.appcompat.app.AppCompatActivity.setContentView(AppCompatActivity.java:170)
        at com.example.autooglas.MainActivity.onCreate(MainActivity.kt:39)
        at android.app.Activity.performCreate(Activity.java:7458)
        at android.app.Activity.performCreate(Activity.java:7448)
        at android.app.Instrumentation.callActivityOnCreate(Instrumentation.java:1286)
        at android.app.ActivityThread.performLaunchActivity(ActivityThread.java:3409)
        at android.app.ActivityThread.handleLaunchActivity(ActivityThread.java:3614)
        at android.app.servertransaction.LaunchActivityItem.execute(LaunchActivityItem.java:86)
        at android.app.servertransaction.TransactionExecutor.executeCallbacks(TransactionExecutor.java:108)
        at android.app.servertransaction.TransactionExecutor.execute(TransactionExecutor.java:68)
        at android.app.ActivityThread$H.handleMessage(ActivityThread.java:2199)
        at android.os.Handler.dispatchMessage(Handler.java:112)
        at android.os.Looper.loop(Looper.java:216)
        at android.app.ActivityThread.main(ActivityThread.java:7625)
        at java.lang.reflect.Method.invoke(Native Method)
        at com.android.internal.os.RuntimeInit$MethodAndArgsCaller.run(RuntimeInit.java:524)
        at com.android.internal.os.ZygoteInit.main(ZygoteInit.java:987)
     Caused by: java.lang.UnsupportedOperationException: BottomNavigationView does not support submenus
        at com.google.android.material.bottomnavigation.BottomNavigationMenu.addSubMenu(BottomNavigationMenu.java:41)
        at androidx.appcompat.view.SupportMenuInflater$MenuState.addSubMenuItem(SupportMenuInflater.java:536)
19119-19119/com.example.autooglas E/AndroidRuntime:     at androidx.appcompat.view.SupportMenuInflater.parseMenu(SupportMenuInflater.java:182)
        at androidx.appcompat.view.SupportMenuInflater.inflate(SupportMenuInflater.java:129)
        at com.google.android.material.bottomnavigation.BottomNavigationView.inflateMenu(BottomNavigationView.java:347)
        at com.google.android.material.bottomnavigation.BottomNavigationView.<init>(BottomNavigationView.java:223)
        at com.google.android.material.bottomnavigation.BottomNavigationView.<init>(BottomNavigationView.java:131)
            ... 28 more
19119-19119/com.example.autooglas I/Process: Sending signal. PID: 19119 SIG: 9

 

navigation.xml

 <?xml version="1.0" encoding="utf-8"?>
<menu xmlns:app="http://schemas.android.com/apk/res-auto"
    xmlns:android="http://schemas.android.com/apk/res/android">

    <item
        android:id="@ id/navigation_oglasi"
        android:icon="@drawable/ic_reorder_24px"
        android:title="@string/prikazOglasa"
        />
    <item
        android:id="@ id/navigation_rezervisani"
        android:icon="@drawable/ic_reorder_24px"
        android:title="@string/rezervOglas"
        />

    <item
        android:id="@ id/navigation_dodaj_oglas"
        android:icon="@drawable/ic_add_box_24px"
        android:title="@string/dodajOglas"
        />

    <menu />
</menu>
 

Комментарии:

1. Похоже, вам не хватает библиотеки для BottomNaviagationView, и вы подавили ошибку, с помощью tools:ignore="MissingClass" которой она смогла скомпилироваться, несмотря на отсутствие библиотеки. Удалите это и добавьте библиотеку .

2. Я добавил реализацию библиотеки » com.google.android.материал:материал:<версия>», и проблема все еще существует.

3. замените версию на последнюю версию, как это implementation 'com.google.android.material:material:1.3.0'

4. Делает ли ваш navigtation.xml есть подменю (вложенные меню)?

5. я добавил navigation.xml так что вы можете видеть

Ответ №1:

Вызвано: java.lang.Исключение UnsupportedOperationException: BottomNavigationView не поддерживает подменю

В вашем меню в конце вашего меню есть подменю, просто удалите его, и оно должно работать

 <?xml version="1.0" encoding="utf-8"?>
<menu xmlns:app="http://schemas.android.com/apk/res-auto"
    xmlns:android="http://schemas.android.com/apk/res/android">

    <item
        android:id="@ id/navigation_oglasi"
        android:icon="@drawable/ic_reorder_24px"
        android:title="@string/prikazOglasa"
        />
    <item
        android:id="@ id/navigation_rezervisani"
        android:icon="@drawable/ic_reorder_24px"
        android:title="@string/rezervOglas"
        />

    <item
        android:id="@ id/navigation_dodaj_oglas"
        android:icon="@drawable/ic_add_box_24px"
        android:title="@string/dodajOglas"
        />

   <!-- Remove this line  <menu /> -->

</menu>