#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>