Fragment$Companion 无法在 BottomNavigationView 侦听器上转换为 androidx.fragment.app.Fragment
Fragment$Companion cannot be cast to androidx.fragment.app.Fragment on BottomNavigationView listener
我的底部导航视图应该可以使用选项卡,但在某些方面我无法投射
fragment as Fragment
不再使用 AndroidX
每次点击菜单项都会崩溃
java.lang.ClassCastException: com.spacexmonitor.MissionListFragment$Companion cannot be cast to androidx.fragment.app.Fragment
at com.spacexmonitor.MainActivity$onCreate$menuOnNavigationItemSelectedListener.onNavigationItemSelected(MainActivity.kt:28)
有我的Activity:
import android.os.Bundle
import androidx.appcompat.app.AppCompatActivity
import androidx.fragment.app.Fragment
import kotlinx.android.synthetic.main.activity_main.*
class MainActivity : AppCompatActivity() {
override fun onCreate(savedInstanceState: Bundle?) {
super.onCreate(savedInstanceState)
setContentView(R.layout.activity_main)
val fragmentManager = supportFragmentManager
val fragmentTransaction = fragmentManager.beginTransaction()
if (savedInstanceState == null) {
fragmentTransaction.replace(R.id.container, MissionListFragment())
fragmentTransaction.commit()
}
val menuOnNavigationItemSelectedListener =
bottomNavigationBar.setOnNavigationItemSelectedListener { item ->
when (item.itemId) {
R.id.launchesMenuItem -> {
val fragment = MissionListFragment
fragmentTransaction.replace(R.id.container, fragment as Fragment)
.commit()
return@setOnNavigationItemSelectedListener true
}
R.id.chartsMenuItem -> {
val fragment = MissionChartFragment
fragmentTransaction.replace(R.id.container, fragment as Fragment)
.commit()
return@setOnNavigationItemSelectedListener true
}
}
false
}
}
}
我的空片段:
import android.os.Bundle
import androidx.fragment.app.Fragment
import android.view.LayoutInflater
import android.view.View
import android.view.ViewGroup
class MissionChartFragment : Fragment() {
companion object {
private val MISSION_CHART = "mission chart"
}
override fun onCreateView(
inflater: LayoutInflater, container: ViewGroup?,
savedInstanceState: Bundle?): View? {
return inflater.inflate(R.layout.fragment_mission_chart, container, false)
}
}
这里的很多答案都是将 app.Fragment
更改为 v4.Fragment
用法,但是这个解决方案对我的问题没有帮助。
改变
val fragment = MissionListFragment
到
val fragment = MissionListFragment()
使用 fragment = MissionListFragment
链接 MissionChartFragment
的 companion object
我的底部导航视图应该可以使用选项卡,但在某些方面我无法投射
fragment as Fragment
不再使用 AndroidX
每次点击菜单项都会崩溃
java.lang.ClassCastException: com.spacexmonitor.MissionListFragment$Companion cannot be cast to androidx.fragment.app.Fragment
at com.spacexmonitor.MainActivity$onCreate$menuOnNavigationItemSelectedListener.onNavigationItemSelected(MainActivity.kt:28)
有我的Activity:
import android.os.Bundle
import androidx.appcompat.app.AppCompatActivity
import androidx.fragment.app.Fragment
import kotlinx.android.synthetic.main.activity_main.*
class MainActivity : AppCompatActivity() {
override fun onCreate(savedInstanceState: Bundle?) {
super.onCreate(savedInstanceState)
setContentView(R.layout.activity_main)
val fragmentManager = supportFragmentManager
val fragmentTransaction = fragmentManager.beginTransaction()
if (savedInstanceState == null) {
fragmentTransaction.replace(R.id.container, MissionListFragment())
fragmentTransaction.commit()
}
val menuOnNavigationItemSelectedListener =
bottomNavigationBar.setOnNavigationItemSelectedListener { item ->
when (item.itemId) {
R.id.launchesMenuItem -> {
val fragment = MissionListFragment
fragmentTransaction.replace(R.id.container, fragment as Fragment)
.commit()
return@setOnNavigationItemSelectedListener true
}
R.id.chartsMenuItem -> {
val fragment = MissionChartFragment
fragmentTransaction.replace(R.id.container, fragment as Fragment)
.commit()
return@setOnNavigationItemSelectedListener true
}
}
false
}
}
}
我的空片段:
import android.os.Bundle
import androidx.fragment.app.Fragment
import android.view.LayoutInflater
import android.view.View
import android.view.ViewGroup
class MissionChartFragment : Fragment() {
companion object {
private val MISSION_CHART = "mission chart"
}
override fun onCreateView(
inflater: LayoutInflater, container: ViewGroup?,
savedInstanceState: Bundle?): View? {
return inflater.inflate(R.layout.fragment_mission_chart, container, false)
}
}
这里的很多答案都是将 app.Fragment
更改为 v4.Fragment
用法,但是这个解决方案对我的问题没有帮助。
改变
val fragment = MissionListFragment
到
val fragment = MissionListFragment()
使用 fragment = MissionListFragment
链接 MissionChartFragment
companion object