【发布时间】:2016-04-21 12:50:11
【问题描述】:
我正在尝试使用伴随对象工厂方法(相当于 Java 中的静态工厂方法)在 Kotlin 中创建嵌套内部类。这是我的代码的简化版本。
class OuterClass {
var myData:List<MyData> = List<>() //gets populated elsewhere
fun getItemFragment(position:Int) : Fragment() {
return InnerClass.Factory.newInstance(position)
}
inner class InnerClass : Fragment() {
companion object Factory {
fun newInstance(position:Int) : InnerClass {
var ic : InnerClass = InnerClass()
var bundle:Bundle = Bundle()
bundle.putInt("index", position)
ic.arguments = bundle
return ic
}
}
override fun onCreateView(inflater:LayoutInflater, container: ViewGroup, savedInstanceState:Bundle): View? {
//create and return view, omitted. Need access to myData
}
}
编译器突出显示“companion”,表示“修饰符伴侣不适用于内部类”,它还突出显示 InnerClass() 调用,表示“表达式无法从嵌套类工厂访问”,使用“inner”关键字制作类内部。
如何使用相当于 Java 中的静态工厂方法来实现我在这里尝试做的事情?
【问题讨论】:
-
您永远不应该将 Fragment 设为内部类,因为它需要一个零参数的构造函数。有关该主题的更多信息:stackoverflow.com/questions/15571010/…
标签: kotlin