5

J'ai une activité principale et une activité de préférence. Lors de ma première activité, j'appelle le menu et je vais sur preferenceActivity en appelant startActivityForResult. Ensuite, je change mes paramètres et je veux revenir sur l'activité principale et voir l'activité principale avec de nouveaux paramètres appliqués. Dans la méthode OnPause() ne suit (que je comprends bien cette méthode sera appelée lorsque je presse bouton retour, non?)Comment retourner de l'écran des préférences à l'activité principale?

@Override 
    protected void onPause() { 
     super.onPause(); 
     setResult(RESULT_OK, new Intent(this, MainActivity.class)); 
     finish(); 
    } 

Sur l'activité principale

protected void onActivityResult(int requestCode, int resultCode, Intent data) { 
     if (requestCode == LAUNCH_SETTINGS) { 
      if (resultCode == RESULT_OK) { 
       new RefreshList().execute(ACTION_SELECT); 
       Log.d(TAG, "On activity result"); 
      } 
     } 
    } 

Mais mon acyncTask ne pas appelé et journal non imprimé. Comment je peux le faire correctement? Merci!

Répondre

12

Lors de ma première activité, j'appelle le menu et je vais sur preferenceActivity en appelant startActivityForResult.

L'utilisation de startActivityForResult() avec PreferenceActivity est plutôt inhabituelle. PreferenceActivity est conçu pour être utilisé avec startActivity(). Si celui qui commence le PreferenceActivity se soucie des changements de préférence, il devrait enregistrer un écouteur de changement de préférence avec l'objet SharedPreferences. Ensuite, je change mes paramètres et je veux revenir sur l'activité principale et voir l'activité principale avec de nouveaux paramètres appliqués. Je recommande que vous utilisez un SharedPreferences.OnSharedPreferenceChangeListener à la place. Ou, relisez simplement les préférences qui vous intéressent dans la méthode onStart() ou onResume() de l'activité d'origine.

Dans la méthode OnPause() ne suit (que je comprends bien cette méthode sera appelée lorsque j'appuie sur le bouton de retour, non?)

Non, ça ne fonctionnera pas. onPause() est trop tard pour appeler setResult().

+0

Merci. Je vais essayer de faire ça. –