imeOptions “actionNext” programaticamente - como pular para o próximo campo?

91

No layout XML é possível especificar android:imeOptions="actionNext"qual Nextbotão adiciona no teclado virtual e clicando nele - o foco salta para o próximo campo.

Como fazer isso programaticamente - por exemplo, com base em algum foco de gatilho de evento para ir para o próximo campo?

Laimoncijus
fonte

Respostas:

191

Você pode usar as constantes da classe EditorInfo para as opções de IME. gostar,

editText.setImeOptions(EditorInfo.IME_ACTION_NEXT);
Firewall_Sudhan
fonte
sim senão insere uma nova linha e salta para isso =)
Ilker Baltaci
2
Como isso responde à pergunta do OP? Isso não pula automaticamente para o próximo campo.
hitmaneidos de
27

Procure o próximo campo focalizável e, em seguida, invoque requestFocus().

TextView nextField = (TextView)currentField.focusSearch(View.FOCUS_RIGHT);
nextField.requestFocus();
Justin
fonte
2
Esta não é uma resposta verdadeira em referência ao título desta pergunta, mas é tecnicamente uma resposta válida. A resposta abaixo é mais apropriada.
Sean Glover,
4
@SeanGlover você nunca deve usar palavras como abaixo porque a posição das respostas está sempre mudando.
Nike15
19

Apenas sugestão, se você estiver usando

     EditTextSample.setImeOptions(EditorInfo.IME_ACTION_DONE); 

não funciona, certifique-se de que seu EditText está usando uma única linha.

Por exemplo:

       editTextSample.setSingleLine();
Ziniestro
fonte
1
Obrigado. Esta deve ser a resposta aceita. Basta chamar setSingleLine () ANTES de setImeOptions.
Herman
8

Sempre há necessidade de adicionar teclas extras além das teclas padrão disponíveis no QWERTYteclado virtual .

Usando XML

<EditText android:text="@+id/EditText01" 
android:id="@+id/EditText01"
android:layout_height="wrap_content"
android:layout_width="fill_parent"
android:imeOptions="actionDone"/>

By Programmatic Way

Uma EditorInfoé a classe mais útil quando você precisa lidar com qualquer tipo de entrada do usuário em seu aplicativo Android.

IME_ACTION_DONE: Esta ação executa uma operação “concluída” sem entrada de nada e o IME será fechado.

 EditTextSample.setImeOptions(EditorInfo.IME_ACTION_DONE);

Para obter mais informações, você pode visitar http://developer.android.com/reference/android/view/inputmethod/EditorInfo.html

IntelliJ Amiya
fonte
1

O pingente kotlin

editText.imeOptions = EditorInfo.IME_ACTION_DONE
Kuzdu
fonte
0
editText.setLines(1);
editText.setSingleLine(true);
editText.setImeOptions(EditorInfo.IME_ACTION_GO);

Eu resolvo o problema, certifique-se com uma única linha e vá na próxima edição de texto ao clicar em entrar

Handelika
fonte
0

No meu caso, defina uma imeOptions para corrigir o problema.

edtAnswer.maxLines = 1
edtAnswer.inputType = InputType.TYPE_CLASS_TEXT
edtAnswer.imeOptions = EditorInfo.IME_ACTION_NEXT
Mete
fonte
0

Você pode fazer isso por

edittext.imeOptions = EditorInfo.IME_ACTION_DONE //for done button

ou

edittext.imeOptions = EditorInfo.IME_ACTION_NEXT //for next button

Mas ... você precisa entender que se você estiver usando filtros para editar texto, então você precisa definir

edittext.setSingleLine()
Kishan Solanki
fonte