volver studio regresar programar poner para como codigo boton bar atras anterior agregar activity java android

java - studio - ¿Cómo anular el botón Atrás de la barra de acción en Android?



programar boton atras android studio (9)

Creo que desea anular la operación de clic del botón de inicio. Puede anular esta funcionalidad como esta en su actividad.

@Override public boolean onOptionsItemSelected(MenuItem item) { switch (item.getItemId()) { case android.R.id.home: Toast.makeText(getApplicationContext(),"Back button clicked", Toast.LENGTH_SHORT).show(); break; } return true; }

aquí está mi consulta ¿Quiero personalizar el botón de retroceso de actividad en la barra de acción, no en el botón de retroceso de la tecla de acceso directo? He reemplazado el método onBackPressed (), funciona con mi botón de emulación y no

con el botón Atrás de la barra de acción.

Quiero que suceda con la barra de acción? ¿Cómo puedo hacer esto? Aquí está mi código

@Override public void onBackPressed() { Toast.makeText(getApplicationContext(),"Back button clicked", Toast.LENGTH_SHORT).show(); return; }

He usado esta tostada si la tecla presionada funciona o no, pero la implementación real cambia para volver a la actividad anterior. pero esto no funciona con el botón presente en la barra de la parte superior de la acción (además del título de la actividad).

Por favor, cualquiera podría especificarme el problema.


Dos cosas a tener en cuenta que el usuario puede presionar el botón Atrás o presionar el botón de inicio de la barra de acciones.
Entonces, si desea redirigirlo al mismo destino, puede hacerlo.

@Override public boolean onOptionsItemSelected(MenuItem item) { switch (item.getItemId()) { case android.R.id.home: onBackPressed(); return true; } return false; } @Override public void onBackPressed() { super.onBackPressed(); Intent intent = new Intent(CurrentActivity.this, NextActivity.class); startActivity(intent); finish(); }

Esto llevará al usuario a la intención presionando cualquiera de las teclas o el botón de la barra de acción.


Hay varias formas de configurar el botón Atrás en la barra:

1) método .setDisplayHomeAsUpEnabled(true); lo hará, y luego simplemente puede anular android.R.id.home

2) agregar <meta-data android:name="android.support.PARENT_ACTIVITY" android:value="my.package.parrent" /> en el manifiesto de Android, pero en este caso no puedes anular el android.R.id.home en OnOptionsMenuSelected.

.. para aquellos que se preguntan por qué no funciona para ellos ...


Lo logré usando solo dos pasos,

Paso 1: vaya a AndroidManifest.xml y agregue el parámetro en tag - android: parentActivityName = ". Home.HomeActivity"

ejemplo:

<activity android:name=".home.ActivityDetail" android:parentActivityName=".home.HomeActivity" android:screenOrientation="portrait" />

Paso 2: en ActivityDetail agregue su acción para la página / actividad anterior

ejemplo:

@Override public boolean onOptionsItemSelected(MenuItem item) { switch (item.getItemId()) { case android.R.id.home: onBackPressed(); return true; } return super.onOptionsItemSelected(item); }


Lo siento, la mía es una respuesta tardía, pero para cualquier otra persona que llegara a esta página con la misma pregunta, había intentado lo anterior:

@Override public boolean onOptionsItemSelected(MenuItem item) { ... if (item.getItemId() == android.R.id.home) { .... } .... }

pero esto falló al presionar el botón "Atrás".

Eventualmente encontré un método que funcionó para mí en https://.com/a/37185334/3697478 que es para anular el "onSupportNavigateUp ()" ya que estoy usando la barra de acciones de la biblioteca de soporte "AppCompatActivity". (Hay un "onNavigateUp ()" equivalente para la biblioteca de barra de herramientas / barra de acciones más nueva).

@Override public boolean onSupportNavigateUp(){ finish(); return true; }

y eliminé la sección "android: parentActivityName =". MainActivity "del archivo de manifiesto.


Si desea que el botón Atrás de ActionBar se comporte del mismo modo que el botón de retroceso de hardware:

@Override public boolean onOptionsItemSelected(MenuItem item) { if (item.getItemId() == android.R.id.home) { onBackPressed(); return true; } return false; }


Si desea volver a la instancia anterior de una Actividad presionando el botón de inicio de la barra de acciones, sin volver a crearlo, puede anular el método getParentActivityIntent para usar el de la pila de respaldo:

@TargetApi(Build.VERSION_CODES.JELLY_BEAN) @Override public Intent getParentActivityIntent() { return super.getParentActivityIntent().addFlags(Intent.FLAG_ACTIVITY_CLEAR_TOP); }

EDITAR:
También puedes lograr el mismo resultado
configurando launchMode de tu actividad principal en singleTop.
Así que configure android:launchMode="singleTop" para actividad principal en su manifiesto.
O puede usar la bandera FLAG_ACTIVITY_CLEAR_TOP con la intención UP.
referencia: Proporcionar navegación ascendente


@Override public boolean onOptionsItemSelected(MenuItem item) { switch (item.getItemId()) { case android.R.id.home: finish(); break; } 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 == android.R.id.home) { onBackPressed(); return true; } //noinspection SimplifiableIfStatement if (id == R.id.signIn) { return true; } return super.onOptionsItemSelected(item); } /////////////////// @Override public void onBackPressed() { super.onBackPressed(); finish(); }