kotlin Set编辑文本给出空对象引用

问题描述

我只是尝试学习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()
            }
        }


    }

相关问答

错误1:Request method ‘DELETE‘ not supported 错误还原:...
错误1:启动docker镜像时报错:Error response from daemon:...
错误1:private field ‘xxx‘ is never assigned 按Alt...
报错如下,通过源不能下载,最后警告pip需升级版本 Requirem...