¿Cómo puedo manejar el cambio de orientación para que Fragmento no se cargue?

Cuando una línea EditText en la interfaz de usuario gana el foco, se inicia un DatePickerFragment para que el usuario introduzca una fecha.

En el cambio de orientación, si la línea EditText tiene el foco y una fecha previamente introducida (de manera que length() > 0 ) no quiero que el fragmento muestre automáticamente.

¿Hay una manera de modificar o agregar código para que si la actividad se crea de nuevo y la línea EditText tiene el enfoque que no se iniciará automáticamente el DatePickerFragment ?

¿Sería una buena idea hacer algo en onResume() ?

O hacer algo con savedInstanceState() y !=null savedInstanceState() ?

 public class Activity extends AppCompatActivity { ... EditText.setOnFocusChangeListener(new OnFocusChangeListener() { @Override public void onFocusChange(View v, boolean hasFocus) { ... if (hasFocus && (EditText.getText().length() == 0)) { DatePickerFragment newFragment = new DatePickerFragment(); newFragment.show(getSupportFragmentManager(), "datePicker"); } else if (hasFocus && (EditText.getText().length() > 0)) { ... DatePickerFragment newFragment = new DatePickerFragment(); newFragment.show(getSupportFragmentManager(), "datePicker"); } } }); } 

¿Utilizas viewPager o simplemente agregas un fragmento a tu actividad? Una forma es guardar los datos que desea mantener en rotación en el onSaveInstanceState(Bundle outState) y luego restaurar los datos dentro de onCreate usando

  if(savedInstanceState != null) { //get your data } 

O simplemente agregue su fragmento sólo cuando la actividad fue cargada (no se vuelve a cargar después de la rotación del dispositivo)

 if(savedInstanceState == null) { mFragmentManager = getSupportFragmentManager(); FragmentTransaction fragmentTransaction = mFragmentManager.beginTransaction(); YourFragment fragment = new YourFragment(); fragmentTransaction.add(R.id.fragment_container, fragment); fragmentTransaction.commit(); } 

De todos modos definitivamente debería comprobar esto y este questons, que podría ser útil.

Si yo fuera tú, en lugar de usar un OnFocusChangeListener , usaría un OnClickListener para mostrar el fragmento siempre que se EditText clic en EditText y hacer que EditText no se EditText .

Para el cambio de orientación, vale la pena señalar que puede evitar que los cambios de configuración tengan efecto en una actividad mediante la adición de android:configChanges="orientation" en el manifiesto a la actividad relacionada. No estoy seguro de si esto ayuda en su caso, sin embargo, pero usted puede echar un vistazo.

  • Comunicación entre un fragmento y una actividad - mejores prácticas
  • Ocultar menú de opciones en PreferenceFragment
  • Fragmento BackStack no funciona aunque addToBackStack (null) se llama
  • ¿Por qué cero fragmento en backstack
  • El fragmento de diálogo omitido vuelve a aparecer cuando se reanuda la aplicación
  • Desaparición de los botones de la barra de acción al pasar entre fragmentos
  • Android conjunto editar estilo de texto globalmente en el tema no funciona
  • Java.lang.IllegalStateException: Fragmento no adjunto a la actividad
  • Cambiar la barra de herramientas y la barra de herramientas CollapsingToolbarLayout mediante programación
  • Confusión respecto a la documentación de inflater.inflate para Android
  • Fragmento onCreateView y onActivityCreated llamado dos veces
  • FlipAndroid es un fan de Google para Android, Todo sobre Android Phones, Android Wear, Android Dev y Aplicaciones para Android Aplicaciones.