2016-06-30 1 views
0

J'ai une activité et un fragment attaché à celle-ci. Voici mon code d'activité:Sur la rotation de l'écran, l'activité onCreate() n'est pas appelée

public class GeneralSettingActivity extends BasePreferenceActivity { 


    @Override 
    protected void onCreate(Bundle savedInstanceState) { 
     super.onCreate(savedInstanceState); 

     mPrefs = PreferenceManager.getDefaultSharedPreferences(this); 
     //addPreferencesFromResource(R.xml.redesign_general_prefs); 
     Log.e("Sushil", "...RedesignGeneralSettingsActivity onCreate()...."); 

     initGeneralSettingsFragment(savedInstanceState); 

    } 

    private void initGeneralSettingsFragment(Bundle bundle) { 
     if (bundle == null) { 
      getSupportFragmentManager().beginTransaction() 
        .replace(R.id.fragments_container, mGeneralSettingsFragment = new GeneralSettingsFragment(), ALARM_GENERAL_SETTINGS_FRAGMENT_TAG) 
        .commit(); 
     } else { 
      mGeneralSettingsFragment = (GeneralSettingsFragment) getSupportFragmentManager().findFragmentByTag(ALARM_GENERAL_SETTINGS_FRAGMENT_TAG); 
     } 
    } 
---- 
---- 

et voici mon code fragment:

public class GeneralSettingsFragment extends PreferenceFragmentCompat { 

    private GeneralSettingActivity mParentActivity; 

    @Override 
    public void onCreate(final Bundle savedInstanceState) { 
     super.onCreate(savedInstanceState); 

     mParentActivity = (GeneralSettingActivity)getActivity(); 

     (!mParentActivity.mPrefs.contains(SharedPreferencesWrapper.GeneralSettingKeys.CLOCK_24_HOURS)) 

------ 
------ 

Lorsque je tourne l'écran, mon fragment onCreate est appelé mais mon activité onCreate n'est pas appelé à nouveau. Pour l'activité, je n'ai pas défini de paramètre dans le fichier manifeste pour empêcher la destruction de l'activité.

Quelqu'un peut-il m'aider à découvrir pourquoi mon activité onCreate n'est pas appelée? Mon activité s'étend à partir de AppCompatActivity.

Merci pour toute aide

+0

vous devriez jeter un coup d'oeil et onResume s'il vous plaît lire ce https://developer.android.com/training/basics/activity-lifecycle/recreating.html – PedroAGSantos

+0

@PedroAGSantos .. thnaks pour votre réponse. Dans mon cas, je fais pivoter l'écran, donc selon l'article que vous avez partagé, il devrait être appelé à nouveau. – Sushil

+0

Comment vérifiez-vous qu'il ne recréerait pas l'activité? Débogage? – PedroAGSantos

Répondre

0

Essayez d'ajouter dans votre AndroidManifest.xml

<activity android:name=".GeneralSettingActivity " 
      android:configChanges="orientation"> 

Et d'appeler le onConfigurationChanged dans votre activité pour gérer l'événement de rotation

@Override 
public void onConfigurationChanged(Configuration newConfig) { 
    super.onConfigurationChanged(newConfig); 

    // Checks the orientation of the screen 
    if (newConfig.orientation == Configuration.ORIENTATION_LANDSCAPE) { 
     Toast.makeText(this, "landscape", Toast.LENGTH_SHORT).show(); 
    } else if (newConfig.orientation == Configuration.ORIENTATION_PORTRAIT){ 
     Toast.makeText(this, "portrait", Toast.LENGTH_SHORT).show(); 
    } 
} 
+1

Il est considéré comme une mauvaise conception de gérer les changements d'orientation par vous-même, sauf s'il s'agit d'un scénario spécifique pour le faire. Je n'ai pas d'exigence spécifique pour le faire. Merci pour votre réponse de toute façon – Sushil