Так что я работал над этим весь день, и несмотря ни на что, я продолжаю получать нулевой указатель на свой CheckBox.Я пытаюсь создать AlertDialog, который имеет список фильтров для сохранения с помощью SharedPreferences.Диалог будет содержать как флажки, так и несколько сборщиков номеров.Я искал ответы переполнения стека в течение многих часов, и я нашел несколько Java-решений по использованию OnClickListener в .setPositiveButton диалогового окна.Эти решения, похоже, не работают в Kotlin.
fab_filter_match.setOnClickListener({
val matchSettingsDialog = AlertDialog.Builder(context)
if (Build.VERSION.SDK_INT >= Build.VERSION_CODES.LOLLIPOP) {
matchSettingsDialog.setView(R.layout.dialog_match_settings)
}
var matchGender = 0
var minAge = 0
var maxAge = 0
var matchLanguage = arrayListOf<String>()
matchSettingsDialog.setTitle("Match Settings")
.setPositiveButton("Ok") { _, _ ->
var matchGender = 0
var minAge = 0
var maxAge = 0
var matchLanguage = arrayListOf<String>()
checkbox_male_match_settings.setOnClickListener({
isChecked -> matchGender += 1
})
checkbox_female_match_settings.setOnClickListener({
isChecked -> matchGender += 2
})
checkbox_other_match_settings.setOnClickListener({
isChecked -> matchGender += 4
})
// Get Gender Selection
if (checkbox_male_match_settings!!.isChecked) {
matchGender += 1
} else
matchGender += 0
if (checkbox_female_match_settings.isChecked) {
matchGender += 2
}
if (checkbox_other_match_settings.isChecked) {
matchGender += 4
}
if (!checkbox_male_match_settings.isChecked &&
!checkbox_female_match_settings.isChecked &&
!checkbox_other_match_settings.isChecked) {
matchGender = 7
}
// Get Age Selection
text_select_minAge_filter.setOnClickListener({
createNumberPicker(0)
})
text_select_maxAge_filter.setOnClickListener({
createNumberPicker(1)
})
minAge = text_select_minAge_filter.text.toString().toInt()
maxAge = text_select_maxAge_filter.text.toString().toInt()
// Get Language Selection
if (checkbox_english_match_settings.isChecked)
matchLanguage.add("English")
if (checkbox_swedish_match_settings.isChecked)
matchLanguage.add("Swedish")
editor.putInt("matchGender", matchGender)
editor.putInt("minAge", minAge)
editor.putInt("maxAge", maxAge)
editor.putStringSet("languages", matchLanguage as Set<String>)
editor.apply()
Toast.makeText(context, "Settings Changed", Toast.LENGTH_SHORT).show()
}
.setNegativeButton("Cancel") { _, _ ->
Toast.makeText(context, "Cancelled", Toast.LENGTH_SHORT).show()
}
.create()
.show()
})
}
Это то, что у меня есть в настоящее время, но я получаю сообщение об ошибке
Process: com.p.fiveminutefriend, PID: 12352
java.lang.NullPointerException: Attempt to invoke virtual method 'void android.widget.CheckBox.setOnClickListener(android.view.View$OnClickListener)' on a null object reference
at com.p.fiveminutefriend.MainTabs.MatchFragment$onViewCreated$3$1.onClick(MatchFragment.kt:128)
at com.android.internal.app.AlertController$ButtonHandler.handleMessage(AlertController.java:177)
at android.os.Handler.dispatchMessage(Handler.java:105)
at android.os.Looper.loop(Looper.java:164)
at android.app.ActivityThread.main(ActivityThread.java:6938)
at java.lang.reflect.Method.invoke(Native Method)
at com.android.internal.os.Zygote$MethodAndArgsCaller.run(Zygote.java:327)
at com.android.internal.os.ZygoteInit.main(ZygoteInit.java:1374)
Я целый день тестировал разные решенияно я в своем уме.Если у кого-нибудь есть какие-либо советы по этому поводу, мы будем очень признательны.