現在、アプリケーションに直感的なインターフェイスを提供しようとしています。
正常に動作するロード時にキーボードをアクティブにする oncreate 関数があります。
public void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.add_popup);
reminder = (CheckBox)findViewById(R.id.reminder_option);
addTask();
taskField = (EditText)findViewById(R.id.task_name);
taskField.setHorizontallyScrolling(true);
taskField.setOnFocusChangeListener(new View.OnFocusChangeListener() {
@Override
public void onFocusChange(View v, boolean focus) {
if (focus) {
getWindow().setSoftInputMode(WindowManager.LayoutParams.SOFT_INPUT_STATE_ALWAYS_VISIBLE);
}
}
});
taskField.requestFocus();
チェックボックスをクリックすると、キーボードが閉じられます
if(checked){
imm.hideSoftInputFromWindow(taskField.getWindowToken(), 2);
dateTitle.setVisibility(View.VISIBLE);
dateSelector.setVisibility(View.VISIBLE);
timeTitle.setVisibility(View.VISIBLE);
timeSelector.setVisibility(View.VISIBLE);
datetimesperator.setVisibility(View.VISIBLE);
私は 2 つの内部クラス、TimePickerFragment と DatePickerFragment の両方を onDate/TimesetListener を実装して使用しています。
問題は、ポップアップから時刻または日付を設定すると、キーボードが再びアクティブになることです。
アクティビティの起動時に EditText がフォーカスされないようにする から解決策を試みました
edittext からフォーカスを削除するためにレイアウトがフォーカス可能に設定されている場合、次のコードを if checked ステートメントに追加しました。RelativeLayout レイアウト = (RelativeLayout)findViewById(R.id.add_container); layout.requestFocus();
ただし、それぞれのダイアログで日付または時刻を設定した後、フォーカスが edittext 要素から離れているにもかかわらず、キーボードはアクティブのままです。
DatePickerDialog または TimePickerDialog を終了するときにキーボードがアクティブにならないようにするにはどうすればよいですか?