【发布时间】:2016-04-05 03:27:03
【问题描述】:
如何通过Fragments 使用 Kotlin Android 扩展?
如果我在onCreateView() 中使用它们,我会得到这个NullPointerException 异常:
原因:java.lang.NullPointerException:尝试调用虚拟 方法'android.view.View android.view.View.findViewById(int)' 空对象引用
这里是片段代码:
package com.obaied.testrun.Fragment
import android.os.Bundle
import android.support.v4.app.Fragment
import android.util.Log
import android.view.LayoutInflater
import android.view.View
import android.view.ViewGroup
import com.obaied.acaan.R
import kotlinx.android.synthetic.main.fragment_card_selector.*
public class CardSelectorFragment : Fragment() {
val TAG = javaClass.canonicalName
companion object {
fun newInstance(): CardSelectorFragment {
return CardSelectorFragment()
}
}
override fun onCreateView(inflater: LayoutInflater?, container: ViewGroup?, savedInstanceState: Bundle?): View? {
var rootView = inflater?.inflate(R.layout.fragment_card_selector, container, false)
btn_K.setOnClickListener { Log.d(TAG, "onViewCreated(): hello world"); }
return rootView
}
}
`
【问题讨论】:
-
如果你想在 onCreateView 中做,btn_K 也将是 rootView 上的一个属性。你可以做
rootView.btn_K.setOnClickListener -
感谢@Makotosan,您的回答对我有用。
-
清理、重建和重启 Android Studio 对我有用
-
@Otziii 这个帖子最初是在 2015 年写的。第一个答案有 259 票并被接受。我认为没有必要添加更多答案。
-
@Solidak 我最近遇到了这个问题,尝试了所有答案,唯一使它起作用的是我现在评论的内容。我在这个线程上有一个答案,但它只是被否决了,所以我把它改成了评论。似乎人们仍然有这个问题,没有人提到要清理并重新启动。
标签: android kotlin kotlin-android-extensions