¿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.
- AccountAuthenticatorActivity y fragmentos
- Fragmento de Android: ¿se mueve de una vista a otra?
- OnActivityResult no se llama después de startIntentSenderForResult
- Android Descargar varios archivos y mostrar el progreso en ListView
- Cómo cambiar el estilo ProgressBar en ListFragment en la biblioteca de compatibilidad?
¿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"); } } }); }
- Método de fábrica del fragmento Android contra sobrecarga del constructor
- DialogFragment anidado múltiple de Android
- ¿Cómo puedo cambiar el menú de la opción en diversos fragmentos?
- Cómo pasar un paquete a un fragmento
- Reemplazo de TabActivity con FragmentActivity y Fragments
- Android Studio obtener "Debe implementar OnFragmentInteractionListener"
- Obtener el último fragmento en backstack
- Cómo implementar un ViewPager con diferentes Fragmentos / Layouts
¿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.
- ¿Puede utilizar declaraciones condicionales en el caso de conmutación en Android?
- En la biblioteca de MPAndroidChart, ¿Cómo envolver etiquetas de eje X en dos líneas cuando es largo?