我正在尝试使用Activity
实现底部导航并使用Kotlin。因此,我在youtube中搜索,发现很多内容都使用Fragment
进行底部导航T_T
所以我尝试从https://www.youtube.com/watch?v=JjfSjMs0ImQ复制代码,因为它们使用Activity
而不是Fragment
但是问题是他们使用Java。因此,我尝试将代码转换为Kotlin。然后发生了这种情况(Logcat)
原因:java.lang.IllegalStateException:bottomNavigationView不能为null在com.example.smscandroid.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
?
如果我写错了,告诉我,我会改善的。
我正在尝试通过Activity实现底部导航并使用Kotlin。所以我在youtube上搜索,看到很多内容都使用Fragment进行底部导航T_T,所以我尝试从...
您的res / layout中应该有一个名为activity_profile.xml的文件,看起来像这样:
非常感谢您的回复。这对我来说意义重大,因为这是我第一次在stackoverflow发表帖子