2010-04-30 10 views
32

J'ai deux AutocompleTextViews et je veux passer au suivant si l'utilisateur appuie sur "NEXT", et fait disparaître le clavier virtuel quand il frappe "DONE" au deuxième AutocompleTextView. Jusqu'à présent, les boutons "NEXT"/"DONE" ne font rien du tout .... Malheureusement je n'ai trouvé aucune ressource pour résoudre ce problème.AutocompleteTextView: sur "NEXT" mettre en surbrillance prochain TextView, sur "DONE", faire disparaître le clavier

Des suggestions? thx

EDIT: Je veux juste ajouter que cela a été demandé quand Android était sur la version 2.3 ou quelque chose comme ça.

+0

Je fais quelque chose de similaire ICI !!! http://stackoverflow.com/questions/12854336/autocompletetextview-backed-by-cursorloader – toobsco42

Répondre

86

je suis tombé sur ce problème et fixé en réglant les imeOptions sur le AutocompleteTextView à actionNext.

Exemple:

<AutoCompleteTextView 
    android:id="@+id/dialog_product_name" 
    android:layout_width="0dp" 
    android:layout_height="wrap_content" 
    android:layout_weight="1" 
    android:singleLine="true" 
    android:completionThreshold="1" 
    android:imeOptions="actionNext" 
    /> 
+7

Notez que 'android: imeOptions = « actionNext »' prend l'utilisateur au champ suivant qui acceptera le texte. Si vous voulez aller à un bouton suivant l'utilisation 'android: imeOptions = « actionDone »' –

+0

prendre note également de la SingleLine = true. Dans mon cas, c'était le problème. Merci! –

3

Je trouve cette solution pour le problème « NEXT »: dans votre code source Voir écrivez quelque chose comme

@Override 
public boolean onKeyUp(int keyCode, KeyEvent event) { 
if (keyCode == KeyEvent.KEYCODE_ENTER) { 
    if (firstAutoComplete.hasFocus()) { 
    // sends focus to another field (user pressed "Next") 
    otherText.requestFocus(); 
    return true; 
    } 
    else if (secondAutoComplete.hasFocus()) { 
      // sends focus to another field (user pressed "Next") 
    anotherText.requestFocus(); 
    return true; 
    } 
} 
return false; 
} 

Il semble être un vieux Android http://code.google.com/p/android/issues/detail?id=4208. Ici, je trouve ma solution: http://groups.google.com/group/android-developers/browse_thread/thread/e53e40bfe255ecaf.

+0

Bien que cela fonctionne lors de l'implémentation de votre propre point de vue, vous pouvez vérifier aussi ajouter un OnKeyListener par setOnKeyListener et en utilisant plus ou moins le même code (override onKey (...)). J'aime la réponse de cebru plus, car elle utilise la manière prédéfinie - bien que actionNext soit la valeur par défaut quand un bouton suivant est affiché de toute façon. – icyerasor

0

Il suffit d'ajouter ces deux lignes dans AutoCompleteTextView code xml:

  android:completionThreshold="1" 
      android:imeOptions="actionNext" 
0

Ne pas oublier d'ajouter inputType = "text" sinon vous devrez entrer le bouton au lieu de suivant/fait un:

<AutoCompleteTextView 
    android:id="@+id/suppliers" 
    android:layout_width="@dimen/summary_input_width" 
    android:layout_height="wrap_content" 
    android:hint="@string/current_supplier" 
    android:imeOptions="actionNext" 
    android:inputType="text" 
    android:lines="1" />