我无法从Kotlin的嵌套班上找到任何班级成员

我想从PersonAdapter类访问MainFragment类的成员,但没有一个可用。 我试图让班级和成员公共和私人也到目前为止没有任何工作。 我想我错过了一些明显的东西,但我无法弄清楚。

class MainFragment : Fragment() { lateinit var personAdapter: PersonAdapter lateinit var personListener: OnPersonSelected private var realm: Realm by Delegates.notNull() lateinit var realmListener: RealmChangeListener<Realm> override fun onCreateView(inflater: LayoutInflater, container: ViewGroup?, savedInstanceState: Bundle?): View? { val v = inflater.inflate(R.layout.fragment_main, container, false) return v } class PersonAdapter() : RecyclerView.Adapter<ViewHolder>() { var localPersonList = personList override fun onBindViewHolder(holder: ViewHolder, position: Int) { holder.bindItems(localPersonList[position]) holder.itemView.setOnClickListener { Toast.makeText(context, "click", Toast.LENGTH_SHORT).show() //I want to reach personListener from here } } override fun onCreateViewHolder(parent: ViewGroup?, viewType: Int): ViewHolder { val v = LayoutInflater.from(parent!!.context).inflate(R.layout.person_list_item, parent, false) return ViewHolder(v) } }} 

在Kotlin中,嵌套类不能默认访问外部类实例,就像Java中的嵌套static class一样。

为此,将inner修饰符添加到嵌套类:

 class MainFragment : Fragment() { // ... inner class PersonAdapter() : RecyclerView.Adapter<ViewHolder>() { // ... } } 

请参阅:语言参考中的嵌套类

在Kotlin中,有两种类型的嵌套类。

  1. 嵌套类
  2. 内部类

嵌套类不允许访问外部类的成员。

如果要访问嵌套类中的外部类成员,则需要将该嵌套类定义为内部类。

 class OuterClass{ var name="john" inner class InnerClass{ //.... } } 
Interesting Posts