在 baseFragment 中使用 T 将导致使用该函数需要“Nothing”而不是 Fragment
Using T in a baseFragment, will result in using that function to need a 'Nothing" instead of Fragment
这是我的方法:
abstract class BaseFragmentKey<T : Fragment> : Parcelable {
fun newFragment(): T {
val fragment = createFragment()
val bundle = Bundle()
bundle.putParcelable("KEY", this)
fragment.arguments = bundle
return fragment
}
protected abstract fun createFragment(): T
@CallSuper
open fun updateExistingFragment(fragment: T): T {
return fragment
}
}
但是当我尝试使用片段调用时:
newFragment = newKey.updateExistingFragment(existingFragment)
它在编译之前说 Type mismatch. Required Nothing, found Fragment
。如果我这样做 existingFragment as Nothing
它会崩溃,因为我无法转换为 null。
我该如何解决这个问题?
stateChange.getNewState<BaseFragmentKey<*>>
中的通配符问题。它应该是例如 stateChange.getNewState<BaseFragmentKey<Fragment>>
这是我的方法:
abstract class BaseFragmentKey<T : Fragment> : Parcelable {
fun newFragment(): T {
val fragment = createFragment()
val bundle = Bundle()
bundle.putParcelable("KEY", this)
fragment.arguments = bundle
return fragment
}
protected abstract fun createFragment(): T
@CallSuper
open fun updateExistingFragment(fragment: T): T {
return fragment
}
}
但是当我尝试使用片段调用时:
newFragment = newKey.updateExistingFragment(existingFragment)
它在编译之前说 Type mismatch. Required Nothing, found Fragment
。如果我这样做 existingFragment as Nothing
它会崩溃,因为我无法转换为 null。
我该如何解决这个问题?
stateChange.getNewState<BaseFragmentKey<*>>
中的通配符问题。它应该是例如 stateChange.getNewState<BaseFragmentKey<Fragment>>