Ok, en mi aplicación tengo un campo para que el usuario ingrese un número. Tengo el campo configurado para aceptar solo números. Cuando el usuario hace clic en el campo, aparece el teclado. En el teclado (en ICS) hay un botón listo. Me gustaría que el botón Listo en el teclado active el botón Enviar que tengo en mi aplicación. Mi código es el siguiente.
package com.michaelpeerman.probability;
import android.app.Activity;
import android.app.ProgressDialog;
import android.content.DialogInterface;
import android.content.DialogInterface.OnCancelListener;
import android.os.Bundle;
import android.os.Handler;
import android.os.Message;
import android.view.View;
import android.view.View.OnClickListener;
import android.widget.Button;
import android.widget.EditText;
import android.widget.TextView;
import java.util.Random;
public class ProbabilityActivity extends Activity implements OnClickListener {
private Button submit;
ProgressDialog dialog;
int increment;
Thread background;
int heads = 0;
int tails = 0;
public void onCreate(Bundle paramBundle) {
super.onCreate(paramBundle);
setContentView(R.layout.main);
submit = ((Button) findViewById(R.id.submit));
submit.setOnClickListener(this);
}
public void onClick(View view) {
increment = 1;
dialog = new ProgressDialog(this);
dialog.setCancelable(true);
dialog.setMessage("Flipping Coin...");
dialog.setProgressStyle(ProgressDialog.STYLE_HORIZONTAL);
dialog.setProgress(0);
EditText max = (EditText) findViewById(R.id.number);
int maximum = Integer.parseInt(max.getText().toString());
dialog.setMax(maximum);
dialog.show();
dialog.setOnCancelListener(new OnCancelListener(){
public void onCancel(DialogInterface dialog) {
background.interrupt();
TextView result = (TextView) findViewById(R.id.result);
result.setText("heads : " + heads + "\ntails : " + tails);
}});
background = new Thread(new Runnable() {
public void run() {
heads=0;
tails=0;
for (int j = 0; !Thread.interrupted() && j < dialog.getMax(); j++) {
int i = 1 + new Random().nextInt(2);
if (i == 1)
heads++;
if (i == 2)
tails++;
progressHandler.sendMessage(progressHandler.obtainMessage());
}
}
});
background.start();
}
Handler progressHandler = new Handler() {
public void handleMessage(Message msg) {
dialog.incrementProgressBy(increment);
if (dialog.getProgress() == dialog.getMax()) {
dialog.dismiss();
TextView result = (TextView) findViewById(R.id.result);
result.setText("heads : " + heads + "\ntails : " + tails);
}
}
};
}
android
keyboard-events
android-softkeyboard
mpeerman
fuente
fuente
Respuestas:
También puede usar este (configura un oyente especial para que se llame cuando se realiza una acción en EditText), funciona tanto para DONE como para RETURN:
fuente
Puedes probar con
IME_ACTION_DONE
.fuente
Prueba esto:
fuente
Prueba esto para Xamarin.Android (Cross Platform)
fuente
Solución Kotlin
La forma básica de manejar la acción realizada en Kotlin es:
Extensión Kotlin
Use esto para llamar
edittext.onDone {/*action*/}
a su código principal. Lo mantiene más legible y mantenibleNo olvides agregar estas opciones a tu texto de edición
fuente
Copié el siguiente código de AndroidStudio cuando creas una LoginActivity. Yo uso los atributos ime
En su diseño
En su actividad
fuente
Puede implementar en escucha clave:
En onCreate:
...
fuente
si desea atrapar el botón de ingresar del teclado para hacer su trabajo que desea hacer a través de cualquier evento, como hacer clic en el botón, puede escribir el siguiente código simple para esa vista de texto
fuente
Kotlin y teclado numérico
Si está utilizando el teclado numérico, debe descartar el teclado, será como:
fuente
Use esta clase en su diseño:
}
En xml:
fuente
fuente
Su último texto de edición .setOnEditorActionListener llame a este método API de hit automático
Fui Call in LoginActivity en et_password
Funcionando bien
fuente
Y esta es una versión de Kotlin:
fuente