Kotlin初心者です。NullPointerExceptionについて質問させていただきます。
前提・実現したいこと
MainActivity のボタンを押下されたらダイアログを表示したいです。しかし、実行して試すとNullPointerExceptionという結果になっていしまいます。null許容型などを使用し、いろいろ試行錯誤してみましたが、うまく実装することができません。なぜこのエラーが起こるのか、どのように解決したらよいのかを教えていただきたいです。
発生している問題・エラーメッセージ
E/AndroidRuntime: FATAL EXCEPTION: main Process: com.example.timerapp, PID: 17027 java.lang.NullPointerException at com.example.timerapp.TimeSet.<init>(TimeSet.kt:13) at com.example.timerapp.MainActivity$onCreate$1.onClick(MainActivity.kt:31) 以下略
なお、エディタ上ではエラーは検出されていません。
該当のソースコード
ダイアログ定義コード
kotlin
1class TimeSet : DialogFragment() { 2 3 // 以下の三行が原因 4 val inflater = activity?.layoutInflater 5 val dialogView = inflater?.inflate(R.layout.timer_setting, null)!! 6 val builder = AlertDialog.Builder(context) 7 8 override fun onCreateDialog(savedInstanceState: Bundle?): Dialog { 9 builder.setView(dialogView) 10 builder.setTitle("Set Timer") 11 builder.setPositiveButton("OK") { dialog, id -> 12 } 13 builder.setNegativeButton("CANCEL") { dialog, id -> 14 } 15 16 setDialog() 17 18 return builder.create() 19 } 20 21 private fun setDialog() { 22 val hour = dialogView.findViewById<NumberPicker>(R.id.hourPicker) 23 hour.minValue = 0 24 hour.maxValue = 6 25 hour.value = 0 26 27 val min = dialogView.findViewById<NumberPicker>(R.id.minPicker) 28 min.minValue = 0 29 min.maxValue = 60 30 min.value = 5 31 32 val sec = dialogView.findViewById<NumberPicker>(R.id.secPicker) 33 sec.minValue = 0 34 sec.maxValue = 60 35 sec.value = 0 36 } 37}
MainActivity
kotlin
1btn.setOnClickListener { 2 val dialog = TimeSet() 3 dialog.show(supportFragmentManager, "TimeSet") 4}
回答2件
あなたの回答
tips
プレビュー