Cierre programático de encabezado de preferencia

En mi aplicación estoy mostrando encabezados de preferencia de la manera recomendada .

Extiendo PreferenceActivity y añadir los encabezados del recurso XML como tal:

@Override public void onBuildHeaders(List<Header> target) { loadHeadersFromResource(R.xml.preference_headers, target); } 

Uno de estos encabezados es:

 <header android:fragment="com.example.FragmentSettings" android:summary="Tap to configure" android:title="General Settings" /> 

Que lanza el principal fragmento de preferencia que extiende PreferenceFragment

Un determinado ajuste permite al usuario borrar todos los datos a los que la aplicación tiene acceso y desautorizar su cuenta.

Si el usuario selecciona esta opción, borra todo, caché, preferencias compartidas, etc, y luego me gustaría volver a la pantalla de autorización inicial.

El problema es que persiste la pantalla de encabezado de preferencias, incluso cuando todas las actividades llaman finish(); E incluso si llamo System.exit(0);

¿Cómo puedo cerrar la maldita cosa?

¡Ayuda!

Dada la pequeña cantidad de detalle que has dado, intentaré proporcionar una respuesta suponiendo que deseas que la actividad de backstack desaparezca al abrir la pantalla de autorización.

  • MyPreferenceActivity – sólo 'onBuildHeaders' como ejemplo (también, la actividad se abre cuando se hace clic en un botón)
  • Preferencia-encabezados – sólo 'FragmentSettings'

FragmentSettings:

 public class FragmentSettings extends PreferenceFragment { @Override public void onCreate(Bundle savedInstanceState) { super.onCreate(savedInstanceState); addPreferencesFromResource(R.xml.preference_settings); Preference myPref = (Preference) findPreference("pref_clearAllData"); myPref.setOnPreferenceClickListener(new OnPreferenceClickListener() { public boolean onPreferenceClick(Preference preference) { Intent intent = new Intent(FragmentSettings.this.getActivity(), AuthActivity.class); intent.addFlags(Intent.FLAG_ACTIVITY_CLEAR_TOP | Intent.FLAG_ACTIVITY_NEW_TASK); startActivity(intent); return true; } }); } } 

Preferences_settings (Supongo que no estás usando una casilla de verificación, pero funciona como un ejemplo):

 <PreferenceScreen xmlns:android="http://schemas.android.com/apk/res/android" > <PreferenceCategory android:title="General Settings" > <CheckBoxPreference android:key="pref_clearAllData" android:title="Clear all data" android:summary="Clears all data and shows the authorisation screen" android:defaultValue="false" /> </PreferenceCategory> 

Por favor intente esto:

 protected void onListItemClick (ListView l, View v, int position, long id) { super.onListItemClick(l, v, position, id); finish(); } 
FlipAndroid es un fan de Google para Android, Todo sobre Android Phones, Android Wear, Android Dev y Aplicaciones para Android Aplicaciones.