【发布时间】:2019-07-08 14:01:15
【问题描述】:
在下面的代码中,我有 2 个片段 FragmentLeft 和 FragmentRight 都从 Fragment 类扩展。 根据下面的扩展方法,我正在尝试使用通用数据类型作为方法的参数,因此当我使用此方法时,它应该接受 FragmentLeft 或 FragmentRight 的实例.....
但是,下面的代码会产生注释中所述的错误
请告诉我如何解决它
代码
var fragTransactionInstance = getFragmentManagerInstance()?.let {
it.getFragmentTransactionInstance()
?.replaceTransaction(R.id.fragLeft, fragmentLeft)//no enough
information to infer type variable T
?.replaceTransaction(R.id.fragRight, fragmentRight)////no
enough information to infer type variable T
}?.also {
it.commit()
}
}
fun initViews() : Unit {
fragmentLeft = FragmentLeft()
fragmentRight = FragmentRight()
}
fun <T : Fragment> FragmentTransaction.replaceTransaction(layout: Int, t:
Fragment?): FragmentTransaction {
return this.replace(layout, t)
}
类:
import android.os.Bundle
import android.support.v4.app.Fragment
import android.util.Log
import android.view.LayoutInflater
import android.view.View
import android.view.ViewGroup
import com.example.kotlindynmaicfragment_v1.MainActivity
import com.example.kotlindynmaicfragment_v1.R
import kotlinx.android.synthetic.main.activity_main.view.*
class FragmentRight : Fragment() {
val LOG_TAG = this::class.java.name
override fun onCreate(savedInstanceState: Bundle?) {
super.onCreate(savedInstanceState)
Log.d(LOG_TAG, "onCreate")
}
override fun onActivityCreated(savedInstanceState: Bundle?) {
super.onActivityCreated(savedInstanceState)
Log.d(LOG_TAG, "onActivityCreated")
}
///////////////////
class FragmentLeft : Fragment() {
val LOG_TAG = this::class.java.name
override fun onCreate(savedInstanceState: Bundle?) {
super.onCreate(savedInstanceState)
Log.d(LOG_TAG, "onCreate")
}
override fun onActivityCreated(savedInstanceState: Bundle?) {
super.onActivityCreated(savedInstanceState)
Log.d(LOG_TAG, "onActivityCreated")
}
【问题讨论】:
标签: android android-fragments generics kotlin