前提・実現したいこと
カスタムダイアログを作り、その中でシークバーの処理を書き実行すると、
アプリ内のカスタムダイアログを呼び出したところで強制終了してしまいます。
どのようにコードを変えると強制終了しないかご教授いただければ幸いです。
発生している問題・エラーメッセージ
java.lang.NullPointerException: Attempt to invoke virtual method 'void android.widget.SeekBar.setOnSeekBarChangeListener(android.widget.SeekBar$OnSeekBarChangeListener)' on a null object reference
Dialogs.kt
import android.app.AlertDialog import android.app.Dialog import android.content.Context import android.os.Bundle import android.support.v4.app.DialogFragment import android.widget.SeekBar import kotlinx.android.synthetic.main.activity_main.* import kotlinx.android.synthetic.main.dialog_setting.* class CustomDialog : DialogFragment() { interface OnClickListener { fun onPositiveClick() fun onNegativeClick() } private lateinit var listener:OnClickListener override fun onAttach(context: Context?){ super.onAttach(context) if (context is CustomDialog.OnClickListener){ listener = context } } override fun onCreateDialog(savedInstanceState: Bundle?):Dialog { val builder = AlertDialog.Builder(activity).apply { super.onCreate(savedInstanceState) setView(R.layout.dialog_setting) seekBar.setOnSeekBarChangeListener( object : SeekBar.OnSeekBarChangeListener { //ツマミがドラッグされると呼ばれる override fun onProgressChanged(seekBar: SeekBar, progress: Int, fromUser: Boolean) { formula2.text = progress.toString() formula4.text = progress.toString() } override fun onStartTrackingTouch(seekBar: SeekBar) {} override fun onStopTrackingTouch(seekBar: SeekBar) {} } ) setMessage("割引率は?") setPositiveButton("決定") { dialog, which -> listener.onPositiveClick() } setNegativeButton("閉じる") { dialog, which -> listener.onNegativeClick() dismiss() } } return builder.create() } }
回答1件
あなたの回答
tips
プレビュー
バッドをするには、ログインかつ
こちらの条件を満たす必要があります。
2019/12/29 06:10