问题描述
我只是尝试学习Kotlin,我知道我很想念这件事,但是这个Kotlin令人困惑……您所做的一切都很复杂,而Kotlin并没有“轻松”
好吧,所以我想在edittext(ins_from)中设置当前日期,但是在创建片段时我得到对象null引用...我想我必须在片段和editttext创建之后设置文本(? )
这是我的kotlin文件:
package com.example.mycarskot
import android.app.DatePickerDialog
import android.os.Bundle
import android.view.LayoutInflater
import android.view.View
import android.view.ViewGroup
import android.widget.EditText
import androidx.fragment.app.Fragment
import kotlinx.android.synthetic.main.frg_new_car.*
import kotlinx.android.synthetic.main.fragment_frg_main.*
import java.text.SimpleDateFormat
import java.util.*
public class frg_new_car : Fragment() {
override fun onCreateView(
inflater: LayoutInflater,container: ViewGroup?,savedInstanceState: Bundle?
): View? {
var cal = Calendar.getInstance()
val dateSetListener = DatePickerDialog.OnDateSetListener { view,year,monthOfYear,dayOfMonth ->
cal.set(Calendar.YEAR,year)
cal.set(Calendar.MONTH,monthOfYear)
cal.set(Calendar.DAY_OF_MONTH,dayOfMonth)
val myFormat = "mm.dd.yyyy" // mention the format you need
val sdf = SimpleDateFormat(myFormat,Locale.US)
ins_from.setText(sdf.format(cal.time))
}
ins_from.setText(SimpleDateFormat("mm.dd.yyyy").format(System.currentTimeMillis()))
return inflater.inflate(R.layout.frg_new_car,container,false)
}
}
解决方法
正如@CommonsWare所说,我需要将代码放入onViewCreated() 现在可以了,谢谢:)
override fun onViewCreated(view: View,savedInstanceState: Bundle?) {
super.onViewCreated(view,savedInstanceState)
var cal = Calendar.getInstance()
val dateSetListener =
DatePickerDialog.OnDateSetListener { view,year,monthOfYear,dayOfMonth ->
cal.set(Calendar.YEAR,year)
cal.set(Calendar.MONTH,monthOfYear)
cal.set(Calendar.DAY_OF_MONTH,dayOfMonth)
val myFormat = "mm.dd.yyyy" // mention the format you need
val sdf = SimpleDateFormat(myFormat,Locale.US)
ins_from.setText(sdf.format(cal.time))
}
ins_from.setText(SimpleDateFormat("mm.dd.yyyy").format(System.currentTimeMillis()))
ins_from.setOnClickListener {
this.activity?.let { it1 ->
DatePickerDialog(
it1,dateSetListener,cal.get(Calendar.YEAR),cal.get(Calendar.MONTH),cal.get(Calendar.DAY_OF_MONTH)
).show()
}
}
}