【发布时间】:2018-04-10 22:14:31
【问题描述】:
编辑:这比我想象的要简单得多,我只需要清理项目!
我正在尝试在包含 GridView 的片段内定义一个接口,以强制任何将附加该片段的活动实现该接口和 onImageSelected 方法。 一旦我检查了活动是否正确实现了接口,我将它转换为回调对象。
class MasterListFragment : Fragment(){
lateinit var mCallBack: OnImageClickListener
interface OnImageClickListener{
fun onImageSelected(position: Int)
}
override fun onAttach(context: Context?) {
super.onAttach(context)
if(context !is OnImageClickListener)
throw ClassCastException(context.toString() + "must implement OnImageClickListener")
else
mCallBack = context
}
override fun onCreateView(inflater: LayoutInflater?, container: ViewGroup?, savedInstanceState: Bundle?): View? {
val view = inflater?.inflate(R.layout.fragment_master_list, container, false)
var adapter = MasterListAdapter(context, AndroidImageAssets.getAll())
var mGridView = view?.findViewById(R.id.master_grid_view) as GridView
mGridView.adapter = adapter
mGridView.setOnItemClickListener { _, _, position, _ -> mCallBack.onImageSelected(position) }
return view
}
在我的活动中,我只是实现接口并覆盖 onImageSelected 函数。
但我遇到了这个错误:
错误:任务 ':app:compileDebugJavaWithJavac' 执行失败。
无法读取类文件:'***\tmp\kotlin-classes\debug\com\example\android\myproject\MasterListFragment$mCallBack$1.class'
我尝试不使用 lateinit var 和一个简单的 var 但没有运气 我不明白的是,即使更改了变量名,它仍然指示 MasterListFragment$mCallBack$1.class
感谢您的帮助!
【问题讨论】: