2016-06-30 4 views
0

У меня есть активность и присоединенный фрагмент. Вот мой код вида деятельности:На экране вращения активность onCreate() не называется

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

и вот мой фрагмент кода:

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

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

Когда я вращать экран, мой фрагмент OnCreate называется, но моя деятельность OnCreate не вызывается. Для этой операции я не делал никаких настроек в файле манифеста, чтобы остановить действие от уничтожения.

Может кто-нибудь помочь мне узнать, почему моя деятельность onCreate не вызывается. Моя деятельность в конечном итоге распространяется на AppCompatActivity.

Спасибо за любую помощь

+0

вы должны смотреть и onResume, пожалуйста, прочтите это https://developer.android.com/training/basics/activity-lifecycle/recreating.html – PedroAGSantos

+0

@PedroAGSantos .. thnaks за ваш ответ. В моем случае, я вращаю экран, так что в соответствии с разделом, который вы поделили, его нужно снова вызвать .. – Sushil

+0

как вы подтверждаете, что это не воссоздает активность? Отладка? – PedroAGSantos

ответ

0

Попробуйте добавить в ваш AndroidManifest.xml

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

и призывая onConfigurationChanged в своей деятельности, чтобы обработать событие 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

Считается, что плохая конструкция обрабатывает изменения ориентации самостоятельно, если только для них не существует определенного сценария. У меня нет особых требований для этого. Спасибо за ваш ответ в любом случае – Sushil