Tengo una actividad, donde quiero que el teclado de software se abra por completo. ¿Cómo cerrar la actividad después de presionar ATRÁS, cuando se abre el teclado? Ahora tengo que hacer clic en ATRÁS dos veces, primero para cerrar el teclado y luego para terminar la Actividad.Cómo cerrar la actividad con el teclado del software después de presionar ATRÁS?
Respuesta
Usted puede utilizar el siguiente
@Override
public boolean onKeyUp(int keyCode, KeyEvent event)
{
if (keyCode == KeyEvent.KEYCODE_BACK && event.getRepeatCount() == 0) {
finish();
return true;
}
return super.onKeyUp(keyCode, event);
}
Desafortunadamente, esto no está funcionando. onKeyUp() no se llama cuando el teclado está abierto. – fhucho
@Override
public boolean onKeyDown(int keyCode, KeyEvent event)
{
if (keyCode == KeyEvent.KEYCODE_BACK && event.getRepeatCount() == 0) {
finish();
return true;
}
return super.onKeyDown(keyCode, event);
}
pero decir u una cosa que tiene que poner otro esfuerzo para detectar que el teclado está abierto y que la bandera de uso que se puede utilizar para decidir si volver o actividad acabado
Gracias, pero onKeyDown no se invoca cuando el teclado está abierto. – fhucho
uso onKeyPreIme (int keyCode, evento KeyEvent) método y comprobar si hay KeyEvent.K EYCODE_BACK evento. Es muy simple sin hacer ningún código de fantasía.
establecer un OnEditorActionListener para la EditarTexto en la actividad para la que está proporcionando el teclado en pantalla como la de abajo,
editText.setOnEditorActionListener(new OnEditorActionListener() {
public boolean onEditorAction(TextView v, int actionId,
KeyEvent event) {
if (event != null
&& (event.getKeyCode() == KeyEvent.KEYCODE_BACK)) {
finish();
}
return false;
}
});
Como se ha mencionado, onKeyPreIme se puede utilizar para atrapar el botón de retroceso, pero esto tiene que ser anulado en la vista de texto, no en la actividad.
Aquí es una solución completa:
En primer lugar una nueva clase que deriva de EditarTexto, anula onKeyPreIme y pide una interfaz de devolución de llamada:
// EditTextWithBackButton class
public class EditTextWithBackButton extends EditText
{
public interface IOnBackButtonListener
{
boolean OnEditTextBackButton();
}
public EditTextWithBackButton(Context context)
{
super(context);
}
public EditTextWithBackButton(Context context, AttributeSet attrs)
{
super(context, attrs);
}
public void setOnBackButtonListener(IOnBackButtonListener l)
{
_listener = l;
}
IOnBackButtonListener _listener;
@Override
public boolean onKeyPreIme(int keyCode, KeyEvent event)
{
if (event.getAction()==KeyEvent.ACTION_UP && keyCode==KeyEvent.KEYCODE_BACK)
{
if (_listener!=null && _listener.OnEditTextBackButton())
return false;
}
return super.onKeyPreIme(keyCode, event); //To change body of overridden methods use File | Settings | File Templates.
}
}
A continuación, actualizar su diseño:
<com.yournamespace.whatever.EditTextWithBackButton
android:layout_width="fill_parent"
android:layout_height="wrap_content"
android:id="@+id/textField"
/>
A continuación, actualice su actividad, dentro de OnCreate, después de setContentView:
((EditTextWithBackButton) findViewById(R.id.textField)).setOnBackButtonListener(new EditTextWithBackButton.IOnBackButtonListener()
{
@Override
public boolean OnEditTextBackButton()
{
finish();
return true;
}
});
No creo que necesite el oyente, setOnBackButtonListener, como se sugirió por primera vez.
Tengo que funcione mediante el uso de getContext():
public class EditedText extends EditText {
@Override
public boolean onKeyPreIme (int keyCode, KeyEvent event){
if (event.getAction() == KeyEvent.ACTION_UP && keyCode == KeyEvent.KEYCODE_BACK){
Activity activity = (Activity) getContext();
activity.finish();
return true;
}
return super.onKeyPreIme(keyCode, event);
}
}
Tenga en cuenta, ya que el evento fue 'maneja', Voy a devolver verdadero y no falso como nuevo primer sugiere en las respuestas anteriores.
- 1. Cerrar la aplicación al presionar el botón Atrás en Android
- 2. Cómo ocultar el teclado después de presionar un botón Atrás de UINavigationBar en ios
- 3. Flecha atrás después de cerrar sesión
- 4. ¿Cómo elimino el teclado después de terminar una actividad?
- 5. Prevenir el botón Atrás después de cerrar sesión
- 6. ¿Ocultar el teclado después de las búsquedas del usuario?
- 7. Android cerrar el teclado
- 8. Recargar la página al presionar el botón Atrás
- 9. ¿Cómo evito que aparezca el teclado del software?
- 10. Phonegap Android Botón Atrás - cerrar la aplicación con el botón Atrás en la página principal
- 11. Historial XCode (atrás/adelante) ¿Atajo del teclado?
- 12. Android - Evitar que una actividad se destruya, simplemente detenerla o detenerla al presionar el botón Atrás
- 13. ¿Cómo cerrar un formulario al presionar la tecla de escape?
- 14. Segunda instancia de actividad después del cambio de orientación
- 15. Cómo mostrar el teclado virtual en la actividad nativa
- 16. Cómo controlar el botón Atrás en la actividad
- 17. Cómo mantener el tamaño de la imagen de fondo cuando se muestra el teclado del software
- 18. ¿Cómo liberar la memoria del objeto de actividad real después de salir de la actividad?
- 19. La actividad continúa después de finalizar();
- 20. hilo de android sigue ejecutándose después de presionar el botón Atrás
- 21. Mostrar el teclado virtual cuando la actividad comienza
- 22. Botón Atrás y última actividad
- 23. Android desactivar la tecla Enter en el teclado de software
- 24. El botón Atrás de Android no reinicia la actividad?
- 25. La notificación abre la actividad, se presiona el botón Atrás, se abre la actividad principal?
- 26. Recordar ajax datos agregados al presionar el botón Atrás
- 27. Cómo actualizar la página al presionar el botón Atrás en el navegador (IE, Chrome, Firefox Safari)?
- 28. Cerrar el teclado virtual en el botón presione
- 29. teclado Ocultar evento con la tecla RETRO
- 30. Capturar la tecla Atrás presionar en PhoneGap para Android
good questin también estoy interesado en tu respuesta ..... upvoted y starred ..... –
Esto parece un duplicado de esta pregunta: [http://stackoverflow.com/questions/3940127/intercept- back-button-from-soft-keyboard] (http://stackoverflow.com/questions/3940127/intercept-back-button-from-soft-keyboard) –