1

あるイベントの後に私のアプリで、ユーザーに記入してもらいたいですEditText。それを行うために、私はこれにフォーカスをリクエストし、EditTextこのコードを使用してキーボードを表示しようとします:

public void onGivenEvent(int which) {
  mMyDialog.dismiss(getActivity());
  mMyEditField.requestFocus();
  InputMethodManager imm =
      (InputMethodManager) getActivity().getSystemService(Context.INPUT_METHOD_SERVICE);
  imm.showSoftInput(mMyEditField, InputMethodManager.SHOW_IMPLICIT);
}

xml はmMyEditField次のようになります。

<EditText
  android:id="@+id/edit_field"
  android:layout_width="match_parent"
  android:layout_height="wrap_content"
  android:layout_gravity="center"
  android:layout_marginLeft="10dp"
  android:background="@null"
  android:digits="0123456789.,"
  android:freezesText="true"
  android:hint="some hint"
  android:imeOptions="actionDone"
  android:inputType="numberDecimal"
  android:maxLength="15"
  android:selectAllOnFocus="true"
  android:singleLine="true"
  android:textColor="@android:color/black"
  android:textSize="16sp" />

面白いことに、このコードは最初の試行ではキーボードを表示しません。このコードを 1 回実行すると、デバイスの回転後にキーボードが正しく表示されます。正しく動作しないという同様の問題がandroid:selectAllOnFocus="true"ありましたが、回避策を使用しました-内部で設定OnFocusChangeListenerしました。mMyEditField.selectAll()

この問題を解決する方法はありますか?

4

1 に答える 1