Le focus de la demande EditText ne fonctionne pas

J'ai un EditText et un Button . En cliquant sur le bouton, je veux ouvrir le clavier EditText et en même temps demander le focus sur EditText , afin que l'utilisateur commence directement à taper le clavier et le texte apparaisse dans EditText . Mais dans mon cas, lorsque je clique sur le bouton, il ouvre le clavier, mais il ne mettra pas l'accent sur EditText , en raison de laquelle l'utilisateur doit cliquer à nouveau sur EditText pour y écrire. Quelle est la solution. Toute aide ou suggestion.

Code Sur le bouton du bouton

  • Définir l'emplacement GPS dans Emulator en utilisant Android Studio
  • Mon application lance souvent android.view.WindowLeaked exception -
  • Aucune activité trouvée pour traiter l'intention
  • Quelles sont les différences entre l'extension de l'activité et l'extension de ListActivity?
  • Le jeu multijoueur Google Play Game Services avec le changement d'activité
  • Comment puis-je utiliser les outils: overrideLibrary dans un fichier build.gradle?
  •  m_SearchEditText.requestFocus(); InputMethodManager inputMethodManager=(InputMethodManager)getSystemService(Context.INPUT_METHOD_SERVICE); inputMethodManager.toggleSoftInputFromWindow(m_SearchEditText.getApplicationWindowToken(), InputMethodManager.SHOW_FORCED, 0); 

  • Comment puis-je mettre une adview admob dans l'écran de paramètres pour un fond d'écran en direct?
  • Supprimer une chaîne dans toutes les langues Android
  • Comment faire une animation de droite à gauche dans une mise en page
  • Arrêts LogCat en cours d'exécution en Eclipse Besoins Redémarrer
  • Est-ce que "Bitmap.createScaledBitmap" convertit une image 32 bits en 24 bits?
  • Dépendance ignorée à cause du studio Android de conflit
  • 6 Solutions collect form web for “Le focus de la demande EditText ne fonctionne pas”

    Assurez-vous que le format edittext est en mode tactile. Vous pouvez le faire de deux façons.

    En xml:

     android:focusableInTouchMode="true" 

    En Java:

     view.setFocusableInTouchMode(true); 

    Personnellement, je ne fais pas confiance à la définition XML de ce paramètre. Je demande toujours la mise au point par ces deux lignes de code:

     view.setFocusableInTouchMode(true); view.requestFocus(); 

    Le clavier apparaîtra sur lui-même sans avoir à appeler InputMethodManager.

    Cela fonctionne dans la plupart des cas. Une fois que cela n'a pas fonctionné pour moi parce que j'ai perdu la référence à l'objet en raison d'un traitement assez lourd – assurez-vous que ce n'est pas votre problème.

    Dans mon cas, il a travaillé en ajoutant un gestionnaire après avoir cliqué sur le bouton et le focus dans une autre vue, la mise au point peut revenir à votre vue nécessaire.

    Mettez simplement ceci dans votre code:

     final Handler handler = new Handler(); handler.postDelayed(new Runnable() { @Override public void run() { lastview.getEditText().clearFocus(); m_SearchEditText.requestFocus(); InputMethodManager mgr = (InputMethodManager) getActivity().getSystemService(Context.INPUT_METHOD_SERVICE); mgr.showSoftInput(mLastNameET, InputMethodManager.SHOW_IMPLICIT); } }, 100); 

    J'espère que cela a été utile

    Dans votre écriture manifest.xml :

     <activity android:name=".MainActivity" android:label="@string/app_name" android:windowSoftInputMode="stateAlwaysVisible" /> 

    Et appeler m_SearchEditText.requestfocus() dans oncreate() .
    OU,
    Essayer:

     if(m_SearchEditText.requestFocus()) { getWindow().setSoftInputMode(WindowManager.LayoutParams.SOFT_INPUT_STATE_ALWAYS_VISIBLE); } 

    Ce qui suit fonctionne pour moi et devrait aider:

     EditText yourEditText= (EditText) findViewById(R.id.yourEditText); InputMethodManager imm = (InputMethodManager) getSystemService(Context.INPUT_METHOD_SERVICE); imm.showSoftInput(yourEditText, InputMethodManager.SHOW_IMPLICIT); 

    Comme une extension de cette réponse (je ne l'ai pas ajouté comme un commentaire en raison de la réputation …).

    Si vous souhaitez réduire le temps retardé à zéro, utilisez handler.post () à la place. Code complet:

     final Handler handler = new Handler(); handler.post(new Runnable() { @Override public void run() { lastview.getEditText().clearFocus(); m_SearchEditText.requestFocus(); InputMethodManager mgr = (InputMethodManager) getActivity().getSystemService(Context.INPUT_METHOD_SERVICE); mgr.showSoftInput(mLastNameET, InputMethodManager.SHOW_IMPLICIT); } }); 

    Vous avez également besoin de deux attributs xml pour y parvenir:

     android:focusable="true" android:focusableInTouchMode="true" 

    Ajoutez-les au EditText ainsi que les mises en page parent (Toute mise en page dans laquelle ces vues sont). Par défaut, ceux-ci sont faux, de sorte que l'accent n'est pas donné à la vue demandée.

    Source: https://developer.android.com/reference/android/view/View.html#attr_android:focusable

    Après avoir montré le EditText en fonction de la sélection de la case à cocher, ajouter les points de focus suivants et précédents de manière dynamique dans le code.

    J'espère que cela t'aides.

    coAndroid est un fan Android de Google, tout sur les téléphones Android, Android Wear, Android Dev et Android Games Apps.