Estoy seguro de que lo has visto en mas de una aplicación, es muy sencillo de implementar y te voy a mostrar como funciona
Usaremos la propiedad isShown() de la clase Toast para hacer la comprobación y evitar que salga de la aplicación por error
Nuestro primer paso es añadir un Toast en nuestro Activity
private Toast _exitToast;
e inicializar una instacia en el OnCreate con el mensaje a mostrar, podemos usar el mensaje desde el strings.xml o directamente un string
_exitToast = Toast.makeText(getApplicationContext(), "Push again to exit" , Toast.LENGTH_SHORT);
Nuestro último paso es sobreescribir la implementación de onKeyDown, comprobaremos si el toast se esta viendo en pantalla para poder salir con la proxima pulsación del Back
@Override public boolean onKeyDown(int keyCode, KeyEvent event) { if (keyCode == KeyEvent.KEYCODE_BACK && event.getRepeatCount() == 0) { if(_exitToast.getView().isShown()) { //If it is the first activity it will exit _return super.onKeyDown(keyCode, event); } else { _exitToast.show(); } } else return super.onKeyDown(keyCode, event); return false; }
Código final de nuestro Activity:
package com.parallelcube.example; import android.support.v7.app.ActionBarActivity; import android.os.Bundle; import android.view.KeyEvent; import android.view.Menu; import android.view.MenuItem; import android.widget.Toast; public class MainActivity extends ActionBarActivity { private Toast _exitToast; @Override protected void onCreate(Bundle savedInstanceState) { super.onCreate(savedInstanceState); setContentView(R.layout.activity_main); _exitToast = Toast.makeText(getApplicationContext(), "Push again to exit" , Toast.LENGTH_SHORT); } @Override public boolean onCreateOptionsMenu(Menu menu) { // Inflate the menu; this adds items to the action bar if it is present. getMenuInflater().inflate(R.menu.main, menu); return true; } @Override public boolean onOptionsItemSelected(MenuItem item) { // Handle action bar item clicks here. The action bar will // automatically handle clicks on the Home/Up button, so long // as you specify a parent activity in AndroidManifest.xml. int id = item.getItemId(); if (id == R.id.action_settings) { return true; } return super.onOptionsItemSelected(item); } @Override public boolean onKeyDown(int keyCode, KeyEvent event) { if (keyCode == KeyEvent.KEYCODE_BACK && event.getRepeatCount() == 0) { if(_exitToast.getView().isShown()) { //si esta en el primer estado sale del programa return super.onKeyDown(keyCode, event); } else { _exitToast.show(); } } else return super.onKeyDown(keyCode, event); return false; } }
Ahora nuestra aplicación puede salir usando el doble check de seguridad
Tutorial files
Te puede interesar:
Ayudanos con este blog!
El último año he estado dedicando cada vez más tiempo a la creación de tutoriales, en su mayoria sobre desarrollo de videojuegos. Si crees que estos posts te han ayudado de alguna manera o incluso inspirado, por favor considera ayudarnos a mantener este blog con alguna de estas opciones. Gracias por hacerlo posible!