前提・実現したいこと
androidアプリ開発の初心者です。
ボタンを押すと仮想キーボードが閉じるようなアプリを作成しています。
レイアウト上にはテキストボックスとボタンを配置していて、起動後にテキストボックスを
選択した後、ボタンを押すと仮想キーボードは正常に閉じますが、テキストボックスを選択
せずにボタンを押すとアプリ自体が落ちます。
仮想キーボードが一度も立ち上がっていない状態で閉じる処理をしているため、
InputMethodManagerがnullのままであることが原因と理解しています。
恐らく、回避方法としては仮想キーボードが立ち上がっていることを事前にチェックすれば
よいと思いますが、コードが分かりません。
ご教授お願いします。
発生している問題・エラーメッセージ
E/AndroidRuntime: FATAL EXCEPTION: main Process: com.example.test, PID: XXXX java.lang.NullPointerException at com.example.test.MainActivity.onCreate$lambda-2(MainActivity.kt:72)
該当のソースコード
<EditText android:id="@+id/edtxt1" android:layout_width="220dp" android:layout_height="50dp" android:layout_marginStart="30dp" android:ems="10" android:inputType="textPersonName" app:layout_constraintBottom_toTopOf="@+id/textView2" app:layout_constraintEnd_toStartOf="@+id/btnReset1" app:layout_constraintHorizontal_bias="0.198" app:layout_constraintStart_toStartOf="parent" app:layout_constraintTop_toBottomOf="@+id/textView" tools:ignore="SpeakableTextPresentCheck" /> <Button android:id="@+id/btnReset1" android:layout_width="wrap_content" android:layout_height="wrap_content" android:layout_marginEnd="20dp" android:layout_marginBottom="30dp" android:text="Reset" app:layout_constraintBottom_toTopOf="@+id/textView2" app:layout_constraintEnd_toEndOf="parent" app:layout_constraintStart_toEndOf="@+id/edtxt1" app:layout_constraintTop_toBottomOf="@+id/textView" app:layout_constraintVertical_bias="0.478" />
MainActive
1 2btnReset1.setOnClickListener { 3 /* ボタンが押されたタイミングでキーボードを閉じる */ 4 val inputManager = getSystemService(Context.INPUT_METHOD_SERVICE) as InputMethodManager 5 inputManager.hideSoftInputFromWindow(currentFocus!!.windowToken, InputMethodManager.HIDE_NOT_ALWAYS) 6}
試したこと
InputMethodManagerがnullにならないように、レイアウト上のテキストボックスに<requestFocus/>を追加して、
起動時にテキストボックスのフォーカスをあてたところ、エミュレータでは目論見通りの動きをしたが、実機で
動作確認をするとアプリが落ちた。
補足情報(FW/ツールのバージョンなど)
IDE:android studio ver Android Studio Arctic Fox | 2020.3.1 Patch 3
Build #AI-203.7717.56.2031.7784292, built on October 1, 2021
言語:kotlin
回答1件
あなたの回答
tips
プレビュー
バッドをするには、ログインかつ
こちらの条件を満たす必要があります。
2021/12/25 13:00