Tengo una actividad con una vista de lista. Cuando el usuario hace clic en el elemento, se abre el elemento "visor":
List1.setOnItemClickListener(new OnItemClickListener() {
@Override
public void onItemClick(AdapterView<?> arg0, View arg1, int arg2,long arg3) {
Intent nextScreen = new Intent(context,ServicesViewActivity.class);
String[] Service = (String[])List1.getItemAtPosition(arg2);
//Sending data to another Activity
nextScreen.putExtra("data", datainfo);
startActivityForResult(nextScreen,0);
overridePendingTransition(R.anim.right_enter, R.anim.left_exit);
}
});
Esto funciona bien, pero en la barra de acción la flecha hacia atrás al lado del icono de la aplicación no se activa. ¿Me estoy perdiendo de algo?
java
android
android-3.0-honeycomb
Joaolvcm
fuente
fuente
getActionBar().setDisplayHomeAsUpEnabled(true);
en onCreate yswitch (item.getItemId()) {case android.R.id.home: onBackPressed();break;}
enonOptionsItemSelected
? ambos en ServicesViewActivityRespuestas:
Selvin ya publicó la respuesta correcta. Aquí, la solución en código bonito:
La función
NavUtils.navigateUpFromSameTask(this)
requiere que defina la actividad principal en el archivo AndroidManifest.xmlVer aquí para más lectura.
fuente
getActionBar().setDisplayHomeAsUpEnabled(true);
caso de que esté utilizando bibliotecas de soporte.Asegúrese de que el Botón de inicio de ActionBar esté habilitado en la Actividad:
Android, API 5+:
ActionBarSherlock y App-Compat, API 7+:
Android, API 11+:
Ejemplo
MainActivity
que se extiendeActionBarActivity
:De esta manera, todas las actividades que desee pueden tener la contrapresión.
Android, API 16+:
http://developer.android.com/training/implementing-navigation/ancestral.html
AndroidManifest.xml
:Ejemplo
MainActivity
que se extiendeActionBarActivity
:fuente
Para habilitar el botón de retroceso ActionBar, obviamente necesita una ActionBar en su Actividad. Esto lo establece el tema que está utilizando. Puede configurar el tema para su Actividad en el
AndroidManfiest.xml
. Si está utilizando, por ejemplo, el@android:style/Theme.NoTitleBar
tema, no tiene una barra de acciones. En este caso, la llamada agetActionBar()
volverá nulo. Así que primero asegúrate de tener una ActionBar.El siguiente paso es configurar la
android:parentActivityName
actividad que desea navegar si presiona el botón Atrás. Esto debería hacerse en elAndroidManifest.xml
también.Ahora puede habilitar el botón de retroceso en el
onCreate
método de su actividad "secundaria".Ahora debe implementar la lógica para el botón Atrás. Simplemente anule el
onOptionsItemSelected
método en su actividad "secundaria" y verifique la identificación del botón Atrás que estáandroid.R.id.home
.Ahora puede activar el método
NavUtils.navigateUpFromSameTask(this);
PERO si no ha especificado elandroid:parentActivityName
en usted,AndroidManifest.xml
esto bloqueará su aplicación.A veces esto es lo que quieres porque te recuerda que olvidaste "algo". Entonces, si desea evitar esto, puede verificar si su actividad tiene un padre utilizando el
getParentActivityIntent()
método. Si esto devuelve nulo, no ha especificado el padre.En este caso, puede activar el
onBackPressed()
método que básicamente hace lo mismo que si el usuario presionara el botón Atrás en el dispositivo. Una buena implementación que nunca bloquea tu aplicación sería:Tenga en cuenta que la animación que ve el usuario es diferente entre
NavUtils.navigateUpFromSameTask(this);
yonBackPressed()
.Depende de usted qué camino tomar, pero la solución me pareció útil, especialmente si utiliza una clase base para todas sus actividades.
fuente
Archivo de AndroidManifest:
agregar en DetallesActividad:
es trabajo :]
fuente
Anotaciones de Android:
Fuente: https://github.com/excilys/androidannotations
fuente
Creo que
onSupportNavigateUp()
es la mejor y más simple manera de hacerlo.verifique el código en este enlace Haga clic aquí para obtener el código completo
fuente
https://stackoverflow.com/a/46903870/4489222
Para lograr esto, simplemente hay dos pasos,
Paso 1: vaya a AndroidManifest.xml y agregue el parámetro en la etiqueta - android: parentActivityName = ". Home.HomeActivity"
ejemplo:
Paso 2: en ActivityDetail agregue su acción para la página / actividad anterior
ejemplo:
fuente
En el método OnCreate agregue esto:
Luego agregue este método:
fuente
en
onCreated
método para los nuevos apis.fuente
Si está utilizando la barra Google, estaba enfrentando el mismo problema. Resolví siguiendo estos dos pasos
fuente
Los siguientes pasos son suficientes para retroceder:
Paso 1: este código debe estar en Manifest.xml
Paso 2: no darás
en su actividad para padres al comenzar la actividad para niños.
Paso 3: si necesita volver a la Actividad principal desde la Actividad secundaria, solo debe dar este código para la Actividad secundaria.
fuente
Sobre la base de la respuesta de Jared, tuve que habilitar e implementar el comportamiento del botón de retroceso de la barra de acción en varias actividades y creé esta clase auxiliar para reducir la duplicación de código.
Uso en una actividad:
fuente