Я пытаюсь реализовать нижнюю навигацию с Activity
и использовать Kotlin. Поэтому я ищу в YouTube, и я видел много контента, который использует Fragment
для нижней навигации T_T
Поэтому я пытаюсь скопировать код из https://www.youtube.com/watch?v=JjfSjMs0ImQ, потому что они используют Activity
не Fragment
Но проблема в том, что они используют Java. Поэтому я пытаюсь преобразовать код в Kotlin. И затем это произошло (Logcat)
Причина: java .lang.IllegalStateException: bottomNavigationView не должен быть нулевым в com.example.sms candroid .Profile.onCreate (Profile .kt: 18)
Так что я смотрю в Profile.kt
override fun onCreate(savedInstanceState: Bundle?) {
super.onCreate(savedInstanceState)
setContentView(R.layout.activity_profile)
//init
val bottomNavigationView =
findViewById<BottomNavigationView>(R.id.bottom_navigation)
//Set
bottomNavigationView.selectedItemId = R.id.profile
//Perform ItemSelectedListener
bottomNavigationView.setOnNavigationItemSelectedListener(BottomNavigationView.OnNavigationItemSelectedListener { menuItem ->
when (menuItem.itemId) {
R.id.medication -> {
startActivity(
Intent(
applicationContext
, Medication::class.java
)
)
overridePendingTransition(0, 0)
return@OnNavigationItemSelectedListener true
}
R.id.home -> {
startActivity(
Intent(
applicationContext
, MainActivity::class.java
)
)
overridePendingTransition(0, 0)
return@OnNavigationItemSelectedListener true
}
R.id.profile -> return@OnNavigationItemSelectedListener true
}
false
})
}
Я думаю, что ошибка в
//init
val bottomNavigationView =
findViewById<BottomNavigationView>(R.id.bottom_navigation)
//Set
bottomNavigationView.selectedItemId = R.id.profile
Я думаю, findViewById<BottomNavigationView>(R.id.bottom_navigation)
может получить null
, тогда bottomNavigationView.selectedItemId = R.id.profile
приведет к Exception
Это bottom_navigation. xml
<?xml version="1.0" encoding="utf-8"?>
<menu xmlns:android="http://schemas.android.com/apk/res/android">
<item
android:id="@+id/medication"
android:title="medication"
android:icon="@drawable/ic_medication"/>
<item
android:id="@+id/home"
android:title="home"
android:icon="@drawable/ic_home"/>
<item
android:id="@+id/profile"
android:title="profile"
android:icon="@drawable/ic_profile"/>
</menu>
Почему findViewById<BottomNavigationView>(R.id.bottom_navigation)
получает null
?
Если я напишу что-то не так, скажите, я исправлю это.