Ir a la pantalla de inicio programáticamente


Quiero ir a la pantalla de inicio mediante programación en Android cuando el usuario hace clic en el botón. ¿Cómo se puede hacer esto?

Author: Jonik, 2010-09-16

5 answers

Puedes hacer esto a través de una Intención .

Intent startMain = new Intent(Intent.ACTION_MAIN);
startMain.addCategory(Intent.CATEGORY_HOME);
startMain.setFlags(Intent.FLAG_ACTIVITY_NEW_TASK);
startActivity(startMain);

Esta Intent iniciará la aplicación launcher que el usuario ha definido. Tenga cuidado con esto porque esto se verá como su aplicación se estrelló si el usuario no espera esto.

Si desea que esto construya un botón de salida de su aplicación, lea este artículo en exit Buttons en Android

 149
Author: Janusz,
Warning: date(): Invalid date.timezone value 'Europe/Kyiv', we selected the timezone 'UTC' for now. in /var/www/agent_stack/data/www/ajaxhispano.com/template/agent.layouts/content.php on line 61
2014-10-15 07:25:29

Solución de una línea

moveTaskToBack(true); //activity.moveTaskToBack(true);

Se comportará como Botón de inicio se presiona

 15
Author: Xar E Ahmer,
Warning: date(): Invalid date.timezone value 'Europe/Kyiv', we selected the timezone 'UTC' for now. in /var/www/agent_stack/data/www/ajaxhispano.com/template/agent.layouts/content.php on line 61
2015-08-07 07:42:36

La respuesta de Janusz es genial.

Lo único que quiero añadir, que es un poco demasiado largo para un comentario, es que puede ir a la pantalla de inicio sin tener una referencia a la actividad actual.

El código de Janusz necesita ser llamado desde una Actividad o Fragmento debido a startActivity(),

Para evitar esto, puede almacenar una referencia estática al contexto de su aplicación en su archivo de aplicación:

public class YourApplication extends Application
{

    private static Context mAppContext;

    public void onCreate()
    {
        super.onCreate();
        ...
        YourApplication.mAppContext = getApplicationContext();
    }

    public static Context getContext()
    {
        return mAppContext;
    }

}

Ahora puede enviar al usuario a la pantalla de inicio del dispositivo desde cualquier clase en su aplicación, no solo Actividades, Fragmentos u otras Clases con una referencia a la Actividad actual (puede decidir si esto es bueno o malo):

Intent startMain = new Intent(Intent.ACTION_MAIN);
startMain.addCategory(Intent.CATEGORY_HOME);
startMain.setFlags(Intent.FLAG_ACTIVITY_NEW_TASK);
YourApplication.getContext().startActivity(startMain);
 10
Author: Peter Ajtai,
Warning: date(): Invalid date.timezone value 'Europe/Kyiv', we selected the timezone 'UTC' for now. in /var/www/agent_stack/data/www/ajaxhispano.com/template/agent.layouts/content.php on line 61
2017-05-23 12:03:04

Desde Desarrollador de Android sitio

Aquí hay algunos ejemplos de otras operaciones que puede especificar como intents usando estos parámetros adicionales:

* ACTION_MAIN with category CATEGORY_HOME -- Launch the home screen.
 0
Author: st0le,
Warning: date(): Invalid date.timezone value 'Europe/Kyiv', we selected the timezone 'UTC' for now. in /var/www/agent_stack/data/www/ajaxhispano.com/template/agent.layouts/content.php on line 61
2010-09-16 08:55:09

Sé que esto es un poco tarde, pero también me encontré con el mismo problema y así es como lo resolví. Volviendo a su MainActivity necesita agregar banderas desde la salida Activity

    final Intent mainActivity = new Intent(this, MainActivity.class);
    mainActivity.addFlags(Intent.FLAG_ACTIVITY_CLEAR_TOP);
    mainActivity.addFlags(Intent.FLAG_ACTIVITY_CLEAR_TASK);

Ahora cuando presiona el botón atrás siendo MainActivity el activo, irá a la pantalla de inicio.

 -1
Author: Jim,
Warning: date(): Invalid date.timezone value 'Europe/Kyiv', we selected the timezone 'UTC' for now. in /var/www/agent_stack/data/www/ajaxhispano.com/template/agent.layouts/content.php on line 61
2017-09-06 10:36:06