para - manual de programacion android pdf
El botón "arriba" de la barra de acción destruye la actividad principal, "atrás" no lo hace (5)
En el archivo manifest.xml de Android, agregar el siguiente atributo para la etiqueta de actividad principal funcionó para mí.
android:launchMode="singleTop"
Referencia: http://developer.android.com/guide/topics/manifest/activity-element.html
Consulte la pregunta similar: ¿Cómo puedo volver a una actividad de los padres correctamente?
Tengo una aplicación para Android relativamente simple con una Activity
muestra una lista de elementos y otra que muestra detalles de un elemento seleccionado. Comienzo la actividad de la lista, que es mi actividad más importante (usando FLAG_ACTIVITY_CLEAR_TOP
para borrar la actividad de inicio de sesión desde la que se llama) con:
Intent intent = new Intent(this, ListInstancesActivity.class);
intent.addFlags(Intent.FLAG_ACTIVITY_CLEAR_TOP);
startActivity(intent);
finish();
y desde dentro de esa actividad actúo sobre un elemento seleccionado con:
Intent detailIntent = new Intent(this, ShowInstanceActivity.class);
detailIntent.putExtra(ShowInstanceFragment.ARG_ITEM_ID, id);
startActivity(detailIntent);
Todo funciona bien, y si uso el botón "atrás" de la tecla programable, vuelvo a ListInstancesActivity
como es de esperar. Sin embargo, si, por el contrario, ListInstancesActivity
el botón de respaldo / arriba en la barra de acción, se destruye y ListInstancesActivity
crear la actividad de actividad de ListInstancesActivity
( ListInstancesActivity
. Esto es malo, ya que es relativamente costoso computacional hacerlo.
¿Cómo puedo hacer que la barra de acción se comporte de la misma manera que la tecla programable y simplemente volver a la actividad anterior en lugar de destruirla?
Cabe señalar que estoy usando la versión de biblioteca de soporte de la barra de acción.
Las partes relevantes de mi AndroidManifest.xml
son
<activity
android:name=".agenda.ListInstancesActivity"
android:label="@string/list_instances_activity_title">
</activity>
<activity
android:name=".agenda.ShowInstanceActivity"
android:label="@string/show_instance_activity_title"
android:parentActivityName=".agenda.ListInstancesActivity">
</activity>
Parece que su actividad principal no está configurada correctamente en su manifiesto. Agregue esto dentro de su etiqueta de actividad ShowInstanceActivity:
<meta-data android:name="android.support.PARENT_ACTIVITY" android:value=".agenda.ListInstancesActivity" />
Por lo tanto, su etiqueta de actividad final debería verse como:
<activity
android:name=".agenda.ShowInstanceActivity"
android:label="@string/show_instance_activity_title"
android:parentActivityName=".agenda.ListInstancesActivity">
<meta-data android:name="android.support.PARENT_ACTIVITY" android:value=".agenda.ListInstancesActivity" />
</activity>
Puedes anular lo que debería hacer el botón de subir de la barra de acción:
public boolean onOptionsItemSelected(MenuItem item) {
switch (item.getItemId()) {
case android.R.id.home:
onBackPressed();
return true;
}
return super.onOptionsItemSelected(item);
}
Y recrea el efecto de botón de retroceso.
cuando especifica la actividad principal en el manifiesto, se reinicia al hacer clic en el botón de navegación arriba en la barra de acción.
mira esto ya respondí esta pregunta
https://.com/a/32401235/3479012
debe anular el botón de encendido en la barra de acción accediendo a él por android.R.id.home en onOptionsItemSelected y terminar la actividad principal.
<?xml version="1.0" encoding="utf-8"?>
<application
android:allowBackup="true"
android:icon="@mipmap/ic_launcher"
android:label="@string/app_name"
android:roundIcon="@mipmap/ic_launcher_round"
android:supportsRtl="true"
android:theme="@style/AppTheme">
<activity android:name=".WelcomeActivity">
<intent-filter>
<action android:name="android.intent.action.MAIN" />
<category android:name="android.intent.category.LAUNCHER" />
</intent-filter>
</activity>
<activity android:name=".MainActivity" />
<activity android:name=".StartActivity" />
<activity
android:name=".LoginActivity"
android:parentActivityName=".StartActivity"/>
<activity
android:name=".RegisterActivity"
android:parentActivityName=".StartActivity"/>
<activity android:name=".SettingActivity">
</activity>
</application>
Anyone can check this code and find error??/
Cuando hago clic en el botón Atrás, la aplicación se cierra automáticamente ...