【发布时间】:2021-08-29 11:20:23
【问题描述】:
我是 Android Kotlin 的新手,我无法访问我在 xml 中为 input_mtk ID 输入的值,它总是在 Kotlin 文件上返回 null。 这是我的代码
XML 文件
<TextView
android:id="@+id/matematika"
android:layout_width="wrap_content"
android:layout_height="19dp"
android:layout_marginStart="56dp"
android:layout_marginTop="20dp"
android:gravity="center_horizontal|top"
android:text="@string/matematika"
android:textAppearance="@style/string_form"
app:layout_constraintStart_toStartOf="parent"
app:layout_constraintTop_toBottomOf="@+id/input_bahasa_inggris" />
<EditText
android:id="@+id/input_mtk"
style="@style/shape2"
android:layout_marginStart="56dp"
android:layout_marginTop="8dp"
android:layout_marginEnd="230dp"
android:inputType="numberDecimal"
android:maxLength="5"
android:textAlignment="center"
app:layout_constraintEnd_toEndOf="parent"
app:layout_constraintStart_toStartOf="parent"
app:layout_constraintTop_toBottomOf="@+id/matematika" />
Kotlin 文件
class ResultFragment : Fragment() {
override fun onCreateView(inflater: LayoutInflater, container: ViewGroup?, savedInstanceState: Bundle?): View? {
return inflater.inflate(R.layout.fragment_result, container, false)
}
override fun onViewCreated(view: View, savedInstanceState: Bundle?) {
super.onViewCreated(view, savedInstanceState)
getData()
}
fun getData() {
var Mat = input_mtk.text.toString()
Log.e("test", Mat)
}
}
显示这个错误
java.lang.NullPointerException: input_mtk must not be null
at com.xx.xx.ResultFragment.getData(ResultFragment.kt:38)
at com.xx.xx.ResultFragment.onViewCreated(ResultFragment.kt:33)
如果我改变
var Mat = input_mtk.text.toString()
到
var Mat = input_mtk?.text.toString()
清楚地表明 input_mtk id 返回 null
2021-08-29 16:49:22.158 15887-15887/com.xx.xx E/test: null
【问题讨论】:
-
你在使用 dataBinding , View Binding , kotlin syntetics 吗?
-
@KaruneshPalekar 是的,我正在使用视图绑定
-
为什么你没有在你的代码中使用绑定?你知道怎么做吗?
-
您确定布局正确吗?我试过了,它可以工作,这应该是有效的代码。接受的答案不一定非要完成,如果它被夸大了,您可以随时从 EditText 中读取。
标签: android kotlin kotlin-android-extensions