Kotlin-删除片段的重复方法调用
我试图通过创建一个采用params的单一方法来删除重复的方法。我有几个方法,它们创建一个类的实例,一个片段管理器,然后显示片段。我只是想知道如何将以下内容缩短为一个方法,并传入参数Kotlin-删除片段的重复方法调用,kotlin,Kotlin,我试图通过创建一个采用params的单一方法来删除重复的方法。我有几个方法,它们创建一个类的实例,一个片段管理器,然后显示片段。我只是想知道如何将以下内容缩短为一个方法,并传入参数 private fun openAboutDialogue() { //get a fragment manager val fm = fragmentManager val abtDialogue = GetStartedFragment() abtDialogue.show(fm,
private fun openAboutDialogue() {
//get a fragment manager
val fm = fragmentManager
val abtDialogue = GetStartedFragment()
abtDialogue.show(fm, "About the App")
}
private fun openNewRouteDialogue() {
val confirmNewDialogue = NewRouteFragment()
val fm = fragmentManager
confirmNewDialogue.show(fm, "NewRoute")
}
private fun openEndRouteDialogue() {
val confirmEndDialogue = TrafficDataFragment()
val fm = fragmentManager
confirmEndDialogue.show(fm, "GetTraffic")
}
如果我正确理解了这一点,您只需创建如下内容,将
Fragment
作为参数:
private fun openDialogue(fragment: Fragment, text: String) =
fragment.show(fragmentManager, text)
从技术上讲,你可以做到
fun AppCompatActivity.openDialogue(fragment: DialogFragment, tag: String) {
fragment.show(supportFragmentManager, tag)
}
但现在你必须称之为
openDialogue(GetStartedFragment(), "About the App")
openDialogue(NewRouteFragment(), "NewRoute")
openDialogue(TrafficDataFragment(), "GetTraffic")
如果您想对调用方隐藏片段类,可以使用枚举进行选择,该枚举也可以兼作片段标记:
enum class DialogueType{ GET_STARTED, NEW_ROUTE, TRAFFIC,DATA }
private fun openDialogue(type: DialogueType){
val fragment = when(type) {
GET_STARTED -> GetStartedFragment()
NEW_ROUTE -> NewRouteFragment()
TRAFFIC_DATA -> TrafficDataFragment()
}
fragment.show(fragmentManager, type.name)
}
最后,我希望能够调用任何片段类并显示它们的片段。看起来我仍然需要创建多个MethodsOry我在方法中使用了错误的变量名,将其更改为fragment。我认为这个方法实际上适用于任何片段?