Ir a la pantalla principal mediante programación
-
03-10-2019 - |
Pregunta
Quiero ir a la pantalla de inicio mediante programación en Android cuando el usuario hace clic sobre el botón. ¿Cómo puede hacerse esto?
Solución
Se puede hacer esto a través de un Intención .
Intent startMain = new Intent(Intent.ACTION_MAIN);
startMain.addCategory(Intent.CATEGORY_HOME);
startMain.setFlags(Intent.FLAG_ACTIVITY_NEW_TASK);
startActivity(startMain);
Esta intención se iniciará el lanzador de aplicaciones que el usuario ha definido. Tenga cuidado con esto, porque este aspecto es que le gusten estrelló su aplicación si el usuario no espera que esto.
Si desea que esta para construir un botón de salida de su aplicación por favor leer este artículo sobre salida Botones en Android
Otros consejos
Una solución línea
moveTaskToBack(true); //activity.moveTaskToBack(true);
se comportará como se pulsa el botón Inicio
La respuesta de Janusz es grande.
Lo único que quiero añadir, que es un poco demasiado largo para un comentario, es que se puede ir a la pantalla de inicio sin tener una referencia a la actividad actual.
Código de Janusz necesita ser llamado de una actividad o un fragmento debido a startActivity()
,
Para evitar esto, se puede almacenar una referencia estática a su Contexto aplicaciones 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 usted puede enviar al usuario a la pantalla de inicio del dispositivo de cualquier clase en su aplicación, no sólo actividades, fragmentos, u otras clases con una referencia a la actividad actual (usted puede decidir si esto es una buena o mala cosa) :
Intent startMain = new Intent(Intent.ACTION_MAIN);
startMain.addCategory(Intent.CATEGORY_HOME);
startMain.setFlags(Intent.FLAG_ACTIVITY_NEW_TASK);
YourApplication.getContext().startActivity(startMain);
sitio de desarrolladores de Android
Estos son algunos ejemplos de otras operaciones que se pueden especificar como las intenciones que utilizan estos parámetros adicionales:
* ACTION_MAIN with category CATEGORY_HOME -- Launch the home screen.
startActivity((new Intent(Intent.ACTION_MAIN)).addCategory(Intent.CATEGORY_HOME).setFlags(Intent.FLAG_ACTIVITY_NEW_TASK));
Sé que esto es un poco tarde, pero también me encontré con el mismo problema y aquí es cómo lo resolví. Volviendo a su MainActivity
es necesario agregar banderas de la que sale el 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 se ha pulsado el botón de retroceso siendo MainActivity
la activa, pasará a la pantalla principal.