Системные службы недоступны для Activity до onCreate ()
У меня есть класс диалога MyPersonalDialog (mContext: Context), и этот диалог содержит EditText.Я инициирую класс MyPersonalDialog, анализируя контекст там.val myPersonalDialog = MyPersonalDialog (this)
, а затем я показываю в диалоговом окне мой вызов myPersonalDialog.showMyDialog
этот класс:
class MyPersonalDialog(mContext: Context){
fun showMyDialog(){
val builder = AlertDialog.Builder(context)
val layoutInflater = context.getSystemService(Context.LAYOUT_INFLATER_SERVICE) as LayoutInflater
val view = layoutInflater.inflate(R.layout.dialog_edit_list_title, null)
view.renameListTitle.requestFocus()
val inputHelper = InputHelper(context)
inputHelper.showDialogKeyboard()
builder.setView(view)
builder.setNegativeButton(R.string.cancel, { dialogInterface: DialogInterface, i: Int ->
inputHelper.hideKeyboard(activity, view)
})
//some other code goes next
}
}
Когда пользователь нажимает кнопку NegativeButton, HideKeyboard начинает работать
class InputHelper(val context: Context){
fun hideKeyboard(activity: Activity, view: View) {
val inputManager = activity.getSystemService(Context.INPUT_METHOD_SERVICE) as InputMethodManager
inputManager.hideSoftInputFromWindow(view.windowToken, InputMethodManager.HIDE_NOT_ALWAYS)
}
}
Но появляется эта ошибка: java.lang.IllegalStateException: системные службы недоступны для Activity до onCreate ()
Как я могу исправить эту проблему?Я не понимаю, почему эта ошибка появляется, потому что класс MyPersonalDialog был инициирован после onCreate
Решение найдено:
class InputHelper(val context: Context){
fun showDialogKeyboard() {
val inputMethodManager = context.getSystemService(Context.INPUT_METHOD_SERVICE) as InputMethodManager
inputMethodManager.toggleSoftInput(InputMethodManager.SHOW_FORCED, 0)
}
fun hideKeyboard(view: View) {
val inputManager = context.getSystemService(Context.INPUT_METHOD_SERVICE) as InputMethodManager
inputManager.hideSoftInputFromWindow(view.getWindowToken(),0);
}}