19

he cambiado el locale de mi solicitud programación, como siguiente:¿Es posible actualizar la vista de un fragmento

Resources res = context.getResources(); 

DisplayMetrics dm = res.getDisplayMetrics(); 
android.content.res.Configuration conf = res.getConfiguration(); 
conf.locale = new Locale("cn"); 
res.updateConfiguration(conf, dm); 

Después de esto, me gustaría refrescar vista mi del fragmento que se muestra actualmente a mostrar con la nueva configuración regional.

Por lo tanto, en primer lugar, obtener el fragmento actual (que es el más reciente en backstack):

Después de obtener el fragmento que se muestra actualmente, me gustaría refrescar su opinión , pero ¿cómo ¿para hacerlo? Es posible en Android actualizar la vista de un fragmento

+0

Qué quiere decir invalidar la vista? – Blackbelt

+0

@blackbelt, no, me refiero a actualizar, al igual que funciona en una página web, si selecciona un idioma de una página web, la página se actualiza. –

Respuesta

2

Puede crear un detector, que se invocará cuando cambie la configuración regional. Esto eliminará el Fragmento y volverá a agregar el Fragmento. Su nueva ubicación debe ser levantada.

+3

¿Dónde debe crearse el oyente? ¿Podrías por favor ser más específico sobre cómo hacerlo? –

+0

Crea tu propia interfaz, que tu actividad implementa. Luego registre al oyente con su fragmento en Conectar(). Cuando cambie la configuración regional, llame al método en la interfaz y elimine/vuelva a agregar el fragmento – Mimminito

35

Simplemente puede quitar y poner fragmento de la siguiente manera

Fragment currentFragment = getFragmentManager().findFragmentByTag("FRAGMENT"); 
    FragmentTransaction fragTransaction = getFragmentManager().beginTransaction(); 
    fragTransaction.detach(currentFragment); 
    fragTransaction.attach(currentFragment); 
    fragTransaction.commit(); 

Esto actualizar la vista y la configuración regional cambiará

+0

¿Pero cómo puedo enviar algunos datos para fragmentar? Ahora tengo una vista en blanco en la parte superior. –

+0

¿Cómo está enviando datos para fragmentar? Deberías usar fragment.setArguments (extras de Bundle); método para pasar datos. y cuando actualice el fragmento, los datos persistirán para que no tenga ningún problema. –

+0

sí lo hago, pero el ciclo de vida del fragmento no se llama para la clase MyFragment. –

Cuestiones relacionadas