en Android, Tutoriales

Salir usando doble check

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

1
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

1
_exitToast = Toast.makeText(getApplicationContext(), "Push again to exit" , Toast.LENGTH_SHORT);

Nuestro ultimo 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

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
@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:

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
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

Descargar


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!


Escribe un comentario

Comentario

13 − nueve =