0

Je personnalise DatePickerDialog pour ajouter certaines de mes fonctionnalités pour DatePicker natif. Cela fonctionne comme prévu. Mais les champs jour, mois et année de DatepickerDialog sont modifiables par défaut. donc quand je me concentre ces champs de saisie modifiables clavier souple sera ouvert par défaut et utilisé sera en mesure d'éditer la date/mois/année et lorsque l'utilisateur éditer le jour/mois/année et appuyez sur set/annuler date d'édition DatePickerDialog se ferme et la fonctionnalité fonctionne correctement. Ici, mon problème est lorsque l'utilisateur édite le jour/mois/année et appuie sur set/cancel date d'édition DatePickerDialog se ferme et le softkeyboard est toujours ouvert. il ne se ferme pas dès que DatePickerDialog est fermé. donc pour cela j'ai essayé de cacher le softkeyboard avec le code suivant.comment cacher le softketboard quand DatePickerDialog est ouvert sur l'écran

private DialogInterface.OnDismissListener myOnDismissListener = new DialogInterface.OnDismissListener() { 
    public void onDismiss(DialogInterface dialog) { 
     InputMethodManager imm = (InputMethodManager) ((Activity) ctContext) 
       .getSystemService(Activity.INPUT_METHOD_SERVICE); 

     imm.hideSoftInputFromWindow(this.getWindowToken(), 
       InputMethodManager.HIDE_NOT_ALWAYS); 

    } 
}; 

Mais cela ne fonctionne pas. J'ai donc essayé de basculer le softkey avec le code suivant.

private DialogInterface.OnDismissListener myOnDismissListener = new DialogInterface.OnDismissListener() { 
    public void onDismiss(DialogInterface dialog) { 
     InputMethodManager imm = (InputMethodManager) ((Activity) ctContext) 
       .getSystemService(Activity.INPUT_METHOD_SERVICE); 
     if(imm.isActive()) 
      imm.toggleSoftInput(InputMethodManager.HIDE_IMPLICIT_ONLY, 0); 
    } 
}; 

Mais ici, imm.isActive() retourne toujours false. si j'enlève que if (imm.isActive()) conditionne son fonctionnement quand le softkeyboard est ouvert. mais lorsque le clavier logiciel n'est pas ouvert et utilisé, il suffit d'ouvrir DatePickerDialog et de définir ou d'annuler la date en changeant avec les flèches. Le clavier logiciel s'ouvre en cas d'échec de DatePickerDialog. Donc j'ai besoin d'obtenir cette valeur imm.isActive() correctement. mais c'est toujours faux.

Alors, s'il vous plaît aidez-moi à obtenir la bonne façon de décider si le clavier est ouvert ou non.

Répondre

0

est ici la façon dont je l'ai manié la force de fermeture du clavier souple

@Override 
public void dismiss() { 
    super.dismiss(); 
    //hide the soft keyboard 
    getActivity().getWindow().setSoftInputMode(WindowManager.LayoutParams.SOFT_INPUT_STATE_ALWAYS_HIDDEN); 
} 
0

Ceci est la meilleure option qui arrête l'édition manuelle dans datepickerdialog. Vous pouvez désactiver le clavier logiciel en utilisant ceci.

  final DatePickerDialog dp = new DatePickerDialog(MainActivity.this, new DatePickerDialog.OnDateSetListener() { 

       @Override 
       public void onDateSet(DatePicker view, int year, int monthOfYear, int dayOfMonth) { 

        Calendar newDate = Calendar.getInstance(); 
        newDate.set(year, monthOfYear, dayOfMonth); 
        txtdate.setText(dateFormatter.format(newDate.getTime())); 

       } 
      }, newCalendar.get(Calendar.YEAR), newCalendar.get(Calendar.MONTH), newCalendar.get(Calendar.DAY_OF_MONTH)); 

      dp.show(); 
      dp.getDatePicker().setDescendantFocusability(DatePicker.FOCUS_BLOCK_DESCENDANTS); 
Questions connexes