আমি ব্যবহার করার প্রস্তাব LifecycleObserver যা অংশ লাইফ সাইকল-সচেতন উপাদান সঙ্গে পরিচালনা Lifecycles এর অ্যান্ড্রয়েড জেটপ্যাক ।
আমি যখন খণ্ড / ক্রিয়াকলাপ প্রদর্শিত হবে তখন আমি কীবোর্ডটি খুলতে এবং বন্ধ করতে চাই। প্রথমত, সম্পাদনা পাঠের জন্য দুটি এক্সটেনশন ফাংশন নির্ধারণ করুন । আপনি এগুলি আপনার প্রকল্পের যে কোনও জায়গায় রাখতে পারেন:
fun EditText.showKeyboard() {
requestFocus()
val imm = context.getSystemService(Context.INPUT_METHOD_SERVICE) as InputMethodManager
imm.showSoftInput(this, InputMethodManager.SHOW_IMPLICIT)
}
fun EditText.hideKeyboard() {
val imm = context.getSystemService(Context.INPUT_METHOD_SERVICE) as InputMethodManager
imm.hideSoftInputFromWindow(this.windowToken, 0)
}
তারপরে একটি লাইফাইসাইকেলসবার্সার সংজ্ঞা দিন যা ক্রিয়াকলাপ / খণ্ডটি পৌঁছলে onResume()
বা কীবোর্ডটি খোলে এবং বন্ধ করে দেয় onPause
:
class EditTextKeyboardLifecycleObserver(private val editText: WeakReference<EditText>) :
LifecycleObserver {
@OnLifecycleEvent(Lifecycle.Event.ON_RESUME)
fun openKeyboard() {
editText.get()?.postDelayed({ editText.get()?.showKeyboard() }, 100)
}
@OnLifecycleEvent(Lifecycle.Event.ON_PAUSE)
fun closeKeyboard() {
editText.get()?.hideKeyboard()
}
}
তারপরে আপনার যেকোন টুকরো / ক্রিয়াকলাপের সাথে নীচের লাইনটি যুক্ত করুন, আপনি যেকোন সময় লাইফাইকেলঅবার্সারটি পুনরায় ব্যবহার করতে পারেন। যেমন খণ্ডের জন্য:
override fun onViewCreated(view: View, savedInstanceState: Bundle?) {
super.onViewCreated(view, savedInstanceState)
// inflate the Fragment layout
lifecycle.addObserver(EditTextKeyboardLifecycleObserver(WeakReference(myEditText)))
// do other stuff and return the view
}