В моем приложении я создаю список для поиска внутри фрагмента диалога. Вверху мой editText с примененным к нему TextWatcher.
Однако, когда TextWatcher подключен к EditText из onCreateDialog, я получаю «java .lang.IllegalStateException: search_box не должен быть нулевым». Когда это вместо этого помещается внутри onViewCreated, onViewCreated никогда даже не вызывается.
Может кто-нибудь объяснить, что мне не хватает? Большое спасибо заранее
override fun onCreateDialog(savedInstanceState: Bundle?): Dialog {
val layoutInflater = activity.layoutInflater
val mainView = layoutInflater.inflate(R.layout.search_p, null)
val builder = AlertDialog.Builder(activity)
builder.setView(mainView)
val layout = mainView.findViewById(R.id.results_layout) as LinearLayout
var line = 0
for(i in nameList){
createButton(line,layout)
line++
}
//Below line: java.lang.IllegalStateException: search_box must not be null
search_box.afterTextChanged {
val search = search_box.text.toString().toLowerCase()
line = 0
layout.removeAllViews()
for(i in nameList){
if(contains(search,nameList[line].toLowerCase())){
createButton(line,layout)
}
line++
}
}
return builder.create()
}
private fun EditText.afterTextChanged(afterTextChanged: (String)-> Unit) {
this.addTextChangedListener(object: TextWatcher {
override fun beforeTextChanged(p0:CharSequence?,p1:Int,p2:Int,p3:Int) { }
override fun onTextChanged(p0:CharSequence?,p1:Int,p2:Int,p3:Int) { }
override fun afterTextChanged(editable: Editable?){
afterTextChanged.invoke(editable.toString())
}
}) }