본문 바로가기

개발 노트/Kotlin

[kotlin] lateinit property has not been initialized 에러

커스텀 다이얼로그에서 삭제버튼을 누르면 파이어베이스에서 key값을 가져와서 삭제하는 코드를 작성하는 중에 

"lateinit property key has not been initialized" 이런 오류가 발생했다

초기화 오류가 발생한것이다.

 

아래코드처럼 써져있어서 해당 오류가 발생했다 

class BoardInsideActivity : AppCompatActivity() {


    // key값 선언
    private lateinit var key : String

    private val TAG = BoardInsideActivity::class.java.simpleName

    private lateinit var binding: ActivityBoardInsideActiviyBinding

    private val boardList = mutableListOf<CommunityBoardModel>()






    override fun onCreate(savedInstanceState: Bundle?) {
        super.onCreate(savedInstanceState)

        binding = DataBindingUtil.setContentView(this, R.layout.activity_board_inside_activiy)



        // threedot클릭시
        binding.threedot.setOnClickListener {

            // 텍스트 집어넣기
            val message: String? = "게시글 수정,삭제하기"
            // 다이얼로그 표시
            showDialog(message)
        }


        // CommunityFragment에서 보낸 key데이터 받아오기
        val key = intent.getStringExtra("key")

        // getBoardData함수 실행
        getBoardData(key.toString())



    }

   .. 



    // 다이얼로그 보여주는 함수
    private fun showDialog(message:String?) {

        val dialog = Dialog(this)

        dialog.requestWindowFeature(Window.FEATURE_NO_TITLE)            //타이틀바 제거
        dialog.setContentView(R.layout.activity_community_dialog)       //다이얼로그에 사용할 xml 파일을 불러옴
        dialog.window?.setBackgroundDrawable(ColorDrawable(Color.TRANSPARENT))  // 레이아웃 배경을 투명하게

        val dialogTitle : TextView = dialog.findViewById(R.id.dialogTitle)
        val editBtn : Button = dialog.findViewById(R.id.dialog_edit_btn)
        val deleteBtn : Button = dialog.findViewById(R.id.dialog_delete_btn)

        // dialogTitle와 message 연결
        dialogTitle.text = message

        // 수정버튼 눌렀을때
        editBtn.setOnClickListener {
            Toast.makeText(this, "수정버튼 누름", Toast.LENGTH_SHORT).show()
        }


        // 삭제버튼 눌렀을때
        deleteBtn.setOnClickListener {

//          파이어베이스에 communityboard안에 key값을 찾아와서 삭제
            FBRef.communityboardRef
                .child(key)
                .removeValue()

//            Toast.makeText(this, "삭제완료", Toast.LENGTH_SHORT).show()
            finish()    // 엑티비티 종료
        }

        dialog.show()

    }

}

 

오류발생 코드

 

onCreate함수에서 key값을 받아오는 부분의 val값을 삭제해주면 오류가 해결되서 삭제가 잘 되는것을 확인할수있다

        // CommunityFragment에서 보낸 key데이터 받아오기
        key = intent.getStringExtra("key").toString()

        // getBoardData함수 실행
        getBoardData(key)

수정 코드