如何在 Kotlin 中使用日期选择器为 EditText 设置文本
How to set Text for EditText with Date Picker in Kotlin
我是 Kotlin 和 android 应用程序开发的新手。
我正在学习在线课程,其中一项练习是选择日期以在特定时间提醒待办事项。
我所做的是创建 EditText 并实现 DatePicker。当用户单击日期选择器打开时,在我 select 日期之后,我无法设置为 EditText 的文本。
顺便说一句,我已经检查了其他相关问题,它说检查您的 ID 以确保您指的是正确布局文件中的非空小部件。我仔细检查了一下,这不是问题
这里是错误。
Attempt to invoke virtual method 'void android.widget.EditText.setText(java.lang.CharSequence)' on a null object reference
//EditText on layout file
<EditText
android:id="@+id/calendarEditText"
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:layout_weight="1"
android:hint="Select your date"
android:focusable="false"
/>
//My Kotlin code
override fun onCreate(savedInstanceState: Bundle?) {
super.onCreate(savedInstanceState)
setContentView(R.layout.activity_add)
//DatePicker is called inside onCreate function
calendarEditText.setOnClickListener {
val newFragment = DatePickerFragment()
newFragment.show(supportFragmentManager, "datePicker")
}
}
// DateSet part of my DatePickerFragment
override fun onDateSet(view: DatePicker, year: Int, month: Int, dayOfMonth: Int) {
//selected date converted into one string
val date = "$year/$month/$dayOfMonth"
//this is where I got the error
calendarEditText.setText(date)
}
对我来说,calendarEditText 为空,因为您在 DatePickerFragment 中调用它,所以您处于不同的上下文中。
在您的 onDataSet 中,像这样更新编辑文本:
((MyActivity) activity).setEdt(date);
在您的 activity 中,类似这样的内容:
public setEdt(date: String): void {
calendarEditText.setText(date)
}
或遵循此 tuto 以避免片段
我是 Kotlin 和 android 应用程序开发的新手。
我正在学习在线课程,其中一项练习是选择日期以在特定时间提醒待办事项。
我所做的是创建 EditText 并实现 DatePicker。当用户单击日期选择器打开时,在我 select 日期之后,我无法设置为 EditText 的文本。
顺便说一句,我已经检查了其他相关问题,它说检查您的 ID 以确保您指的是正确布局文件中的非空小部件。我仔细检查了一下,这不是问题
这里是错误。
Attempt to invoke virtual method 'void android.widget.EditText.setText(java.lang.CharSequence)' on a null object reference
//EditText on layout file
<EditText
android:id="@+id/calendarEditText"
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:layout_weight="1"
android:hint="Select your date"
android:focusable="false"
/>
//My Kotlin code
override fun onCreate(savedInstanceState: Bundle?) {
super.onCreate(savedInstanceState)
setContentView(R.layout.activity_add)
//DatePicker is called inside onCreate function
calendarEditText.setOnClickListener {
val newFragment = DatePickerFragment()
newFragment.show(supportFragmentManager, "datePicker")
}
}
// DateSet part of my DatePickerFragment
override fun onDateSet(view: DatePicker, year: Int, month: Int, dayOfMonth: Int) {
//selected date converted into one string
val date = "$year/$month/$dayOfMonth"
//this is where I got the error
calendarEditText.setText(date)
}
对我来说,calendarEditText 为空,因为您在 DatePickerFragment 中调用它,所以您处于不同的上下文中。
在您的 onDataSet 中,像这样更新编辑文本:
((MyActivity) activity).setEdt(date);
在您的 activity 中,类似这样的内容:
public setEdt(date: String): void {
calendarEditText.setText(date)
}
或遵循此 tuto 以避免片段