【发布时间】:2018-03-04 16:55:59
【问题描述】:
我是 Android 中 Kotlin 开发的新手。在这里,我试图从它的内部类访问一个类中定义的变量,如下所示。
class MainActivity : AppCompatActivity() {
var frags: MutableList<Fragment> = mutableListOf()
//.............onCreate and other methods ....
internal class CustAdapter(var arrayList: ArrayList<NavigationData>) : RecyclerView.Adapter<CustAdapter.MyViewHolder>() {
override fun onBindViewHolder(holder: MyViewHolder?, position: Int) {
holder!!.bindItems(arrayList[position])
}
override fun getItemCount(): Int {
return arrayList.size
}
override fun onCreateViewHolder(parent: ViewGroup, viewType: Int): CustAdapter.MyViewHolder {
val v = LayoutInflater.from(parent.context).inflate(R.layout.navigation_item, parent, false)
return MyViewHolder(v)
}
class MyViewHolder(itemView: View) : RecyclerView.ViewHolder(itemView) {
fun bindItems(data: NavigationData) {
itemView.setOnClickListener {
frags.add(BoardFrag()) ///// here i'm getting error "unresolved symbol"
}
}
}
}
}
内部类 MyViewHolder 不允许我访问外部范围的任何变量。
即使我无法访问从内部类方法中的
import kotlinx.android.synthetic.main.activity_main.* 导入的视图 ID。
我能够在java 中以这种方式访问变量,但我已经阅读了有关 stackoverflow 的许多问题,但我还没有得到答案。
【问题讨论】:
-
使用内部,而不是内部 =)
-
使用inner关键字代替内部
class parent { val m=1; inner class child{ print(m)} }