2016-06-30 16 views
0

Ich habe eine Aktivität und ein angehängtes Fragment. Hier ist mein Aktivitätscode:Auf Bildschirmrotation wird die Aktivität onCreate() nicht aufgerufen

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); 
     } 
    } 
---- 
---- 

und hier ist mein Fragment Code:

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)) 

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

Wenn ich den Bildschirm drehen, mein Fragment onCreate genannt wird, aber meine Tätigkeit onCreate nicht erneut aufgerufen. Für die Aktivität habe ich keine Einstellungen in der Manifestdatei vorgenommen, um zu verhindern, dass die Aktivität zerstört wird.

Kann mir jemand helfen herauszufinden, warum meine Aktivität onCreate nicht aufgerufen wird. Meine Aktivität erstreckt sich schließlich von AppCompatActivity.

Vielen Dank für jede Hilfe

+0

Sie einen Blick sollte zu handhaben und onResume lesen Sie bitte diese https://developer.android.com/training/basics/activity-lifecycle/recreating.html – PedroAGSantos

+0

@PedroAGSantos .. thnaks für Ihre Antwort. In meinem Fall rotiere ich den Bildschirm, so wie der Artikel, den Sie geteilt haben, sollte es wieder aufgerufen werden. – Sushil

+0

Wie überprüfen Sie, dass es die Aktivität nicht neu erstellt? Debuggen? – PedroAGSantos

Antwort

0

Versuchen in AndroidManifest.xml Hinzufügen

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

Und die onConfigurationChanged in Ihrer Tätigkeit Aufruf der Rotation Ereignis

@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

Es wird als schlechtes Design angesehen, Orientierungsänderungen selbst zu handhaben, es sei denn, es handelt sich um ein bestimmtes Szenario. Ich habe keine spezielle Anforderung, dies zu tun. Danke für deine Antwort sowieso – Sushil