titulo studio quitar ocultar esconder cambiar barra bar app actionbar android exit back-button

android - studio - ¿Cómo salir de la aplicación y mostrar la pantalla de inicio?



ocultar navigation bar android studio (17)

Tengo una aplicación en la que en la página de inicio tengo botones para navegar a través de la aplicación.

En esa página, tengo un botón "EXIT" que al hacer clic debería llevar al usuario a la pantalla de inicio en el teléfono donde está el ícono de la aplicación.

¿Cómo puedo hacer eso?


(Intenté respuestas anteriores, pero faltan algunos puntos. Por ejemplo, si no realiza una return; después de finalizar la actividad, se ejecuta el código de actividad restante. También debe editar onCreate con return. Si no ejecuta super.onCreate () obtendrá un error de tiempo de ejecución)

Supongamos que tiene MainActivity y ChildActivity .

Dentro de ChildActivity agregue esto:

Intent intent = new Intent(ChildActivity.this, MainActivity.class); intent.setFlags(Intent.FLAG_ACTIVITY_CLEAR_TOP); intent.putExtra("EXIT", true); startActivity(intent); return true;

Dentro de MainActivity onCreate agrega esto:

@Override public void onCreate(Bundle savedInstanceState) { mContext = getApplicationContext(); super.onCreate(savedInstanceState); if (getIntent().getBooleanExtra("EXIT", false)) { finish(); return; } // your current codes // your current codes }


Agregue las siguientes líneas después de finish(); en onDestroy() :

android.os.Process.killProcess(android.os.Process.myPid()); super.onDestroy();


Algunas Actividades en realidad no desea volver a abrir cuando el botón Atrás presiona la Actividad de la Pantalla de bienvenida, la Actividad de la Pantalla de Bienvenida, la Confirmación de Windows. En realidad, no necesitas esto en la pila de actividades. puedes hacer esto usando => abrir el archivo manifest.xml y agregar un atributo

android: noHistory = "true"

a estas actividades.

<activity android:name="com.example.shoppingapp.AddNewItems" android:label="" android:noHistory="true"> </activity>

O

A veces quieres cerrar toda la aplicación en cierto botón de retroceso presiona. Aquí, la mejor práctica es abrir la ventana de inicio en lugar de salir de la aplicación. Para eso, necesita anular el método BackPressed (). Por lo general, este método abre la actividad superior en la pila.

@Override public void onBackPressed(){ Intent a = new Intent(Intent.ACTION_MAIN); a.addCategory(Intent.CATEGORY_HOME); a.setFlags(Intent.FLAG_ACTIVITY_NEW_TASK); startActivity(a); }

O

Al presionar el botón Atrás, desea salir de esa actividad y, además, no desea agregar esto en la pila de actividades. llame al método finish () dentro del método onBackPressed (). no cerrará toda la aplicación. irá a la actividad anterior en la pila.

@Override public void onBackPressed() { finish(); }


Cuando llame a finish onDestroy () se llamará a esa actividad y volverá a la actividad anterior en la pila de actividades ... Entonces ... para salir, no llame a finish ();


El diseño de Android no favorece la salida de una aplicación por elección, sino que la administra el sistema operativo. Puede abrir la aplicación Inicio por su intención correspondiente:

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


Esto es lo que hice:

SomeActivity.java

@Override public void onBackPressed() { Intent newIntent = new Intent(this,QuitAppActivity.class); newIntent.addFlags(Intent.FLAG_ACTIVITY_CLEAR_TOP|Intent.FLAG_ACTIVITY_CLEAR_TASK | Intent.FLAG_ACTIVITY_NEW_TASK); startActivity(newIntent); finish(); }

QuitAppActivity.java

@Override protected void onCreate(Bundle savedInstanceState) { super.onCreate(savedInstanceState); finish(); }

Básicamente, lo que hizo fue borrar todas las actividades de la pila e iniciar QuitAppActivity , cuyo único trabajo es abandonar la aplicación.


Esto funciona bien para mi.
Cierre todas las actividades anteriores de la siguiente manera:

Intent intent = new Intent(this, MainActivity.class); intent.setFlags(Intent.FLAG_ACTIVITY_CLEAR_TOP); intent.putExtra("Exit me", true); startActivity(intent); finish();

Luego, en el método MainActivity onCreate (), agregue esto para finalizar la actividad principal.

setContentView(R.layout.main_layout); if( getIntent().getBooleanExtra("Exit me", false)){ finish(); return; // add this to prevent from doing unnecessary stuffs }


Existe otra opción, utilizar el método FinishAffinity para cerrar todas las tareas en la pila relacionadas con la aplicación.

Ver: https://.com/a/27765687/1984636


Intenté salir de la aplicación usando el siguiente fragmento de código, esto funcionó para mí. Espero que esto te ayude. Hice una pequeña demostración con 2 actividades

primera actividad

public class MainActivity extends Activity implements OnClickListener{ private Button secondActivityBtn; private SharedPreferences pref; private SharedPreferences.Editor editer; @Override public void onCreate(Bundle savedInstanceState) { super.onCreate(savedInstanceState); setContentView(R.layout.activity_main); secondActivityBtn=(Button) findViewById(R.id.SecondActivityBtn); secondActivityBtn.setOnClickListener(this); pref = this.getSharedPreferences("MyPrefsFile", MODE_PRIVATE); editer = pref.edit(); if(pref.getInt("exitApp", 0) == 1){ editer.putInt("exitApp", 0); editer.commit(); finish(); } } @Override public void onClick(View v) { switch (v.getId()) { case R.id.SecondActivityBtn: Intent intent= new Intent(MainActivity.this, YourAnyActivity.class); startActivity(intent); break; default: break; } } }

tu cualquier otra actividad

public class YourAnyActivity extends Activity implements OnClickListener { private Button exitAppBtn; private SharedPreferences pref; private SharedPreferences.Editor editer; @Override protected void onCreate(Bundle savedInstanceState) { super.onCreate(savedInstanceState); setContentView(R.layout.activity_any); exitAppBtn = (Button) findViewById(R.id.exitAppBtn); exitAppBtn.setOnClickListener(this); pref = this.getSharedPreferences("MyPrefsFile", MODE_PRIVATE); editer = pref.edit(); } @Override public void onClick(View v) { switch (v.getId()) { case R.id.exitAppBtn: Intent main_intent = new Intent(YourAnyActivity.this, MainActivity.class); main_intent.addFlags(Intent.FLAG_ACTIVITY_CLEAR_TOP); startActivity(main_intent); editer.putInt("exitApp",1); editer.commit(); break; default: break; } } }


Lo hice con el modo de observador.

Interfaz del observador

public interface Observer { public void update(Subject subject); }

Tema base

public class Subject { private List<Observer> observers = new ArrayList<Observer>(); public void attach(Observer observer){ observers.add(observer); } public void detach(Observer observer){ observers.remove(observer); } protected void notifyObservers(){ for(Observer observer : observers){ observer.update(this); } } }

Child Subject implementa el método de salida

public class ApplicationSubject extends Subject { public void exit(){ notifyObservers(); } }

MyApplication, que su aplicación debería ampliar

public class MyApplication extends Application { private static ApplicationSubject applicationSubject; public ApplicationSubject getApplicationSubject() { if(applicationSubject == null) applicationSubject = new ApplicationSubject(); return applicationSubject; }

}

Actividad base

public abstract class BaseActivity extends Activity implements Observer { public MyApplication app; @Override protected void onCreate(Bundle savedInstanceState) { // TODO Auto-generated method stub super.onCreate(savedInstanceState); app = (MyApplication) this.getApplication(); app.getApplicationSubject().attach(this); } @Override public void finish() { // TODO Auto-generated method stub app.getApplicationSubject().detach(this); super.finish(); } /** * exit the app */ public void close() { app.getApplicationSubject().exit(); }; @Override public void update(Subject subject) { // TODO Auto-generated method stub this.finish(); } }

vamos a probarlo

public class ATestActivity extends BaseActivity { @Override protected void onCreate(Bundle savedInstanceState) { // TODO Auto-generated method stub super.onCreate(savedInstanceState); close(); //invoke ''close'' } }


No se recomienda salir de su aplicación Android. Vea esta question para más detalles.

El usuario siempre puede salir de su aplicación a través del botón de inicio o en la primera actividad a través del botón Atrás.


Puede ser que puedas probar algo como esto

Supongamos que en nuestra aplicación, tenemos una serie de actividades (digamos diez) y tenemos que salir directamente de esta actividad. Lo que podemos hacer es crear un intento e ir a la actividad raíz y establecer la bandera en la intención como

intent.setFlags(Intent.FLAG_ACTIVITY_CLEAR_TOP);

también, agregue algo extra como booleano a la intención

intent.putExtra("EXIT", true);

Luego, en la actividad raíz, verifique el valor del boolean y de acuerdo con esa llamada finish (), en el onCreate() de la actividad raíz

if (getIntent().getBooleanExtra("EXIT", false)) { finish(); }


Si desea finalizar una actividad, simplemente puede llamar a finish() . Sin embargo, es una mala práctica tener un botón de salida en la pantalla.


Si quieres salir de tu aplicación. Luego use este código dentro de su evento de botón presionado. me gusta:

public void onBackPressed() { moveTaskToBack(true); android.os.Process.killProcess(android.os.Process.myPid()); System.exit(1); }


primero termine su aplicación usando el método finish();

y luego agregue las líneas siguientes en onDestroy para eliminar la fuerza cerrar

android.os.Process.killProcess(android.os.Process.myPid()); super.onDestroy();


si quieres salir de la aplicación coloca este código debajo de tu función

public void yourFunction() { finishAffinity(); moveTaskToBack(true); } //For an instance, if you want to exit an application on double click of a //button,then the following code can be used. @Override public boolean onKeyDown(int keyCode, KeyEvent event) { if (keyCode == KeyEvent.KEYCODE_BACK && event.getRepeatCount() == 2) { // do something on back. From Android 16+ you can use the following: finishAffinity(); moveTaskToBack(true); } return super.onKeyDown(keyCode, event); }


System.exit(0);

Es probablemente lo que estás buscando. Cerrará toda la aplicación y lo llevará a la pantalla de inicio.