J'ai changé la locale
de mon application par programme , comme suit:
Resources res = context.getResources();
DisplayMetrics dm = res.getDisplayMetrics();
Android.content.res.Configuration conf = res.getConfiguration();
conf.locale = new Locale("cn");
res.updateConfiguration(conf, dm);
Après cela, je voudrais actualiser la vue de mon fragment actuellement affiché pour afficher de nouveaux paramètres régionaux.
Donc, je reçois d’abord le fragment actuel (c’est le dernier dans backstack
):
BackStackEntry latestEntry=fragMgr.getBackStackEntryAt(fragMgr.getBackStackEntryCount()-1);
String str=latestEntry.getName();
Fragment fragment=fragMgr.findFragmentByTag(str);
Après avoir obtenu le fragment actuellement affiché, je voudrais actualiser sa vue , mais comment le faire? Est-il possible dans Android de rafraîchir la vue d'un fragment
Vous pouvez simplement détacher et attacher un fragment comme ci-dessous
Fragment currentFragment = getFragmentManager().findFragmentByTag("FRAGMENT");
FragmentTransaction fragTransaction = getFragmentManager().beginTransaction();
fragTransaction.detach(currentFragment);
fragTransaction.attach(currentFragment);
fragTransaction.commit();
Cela actualisera la vue et les paramètres régionaux changeront
Vous pouvez créer un écouteur, qui sera appelé lorsque les paramètres régionaux seront modifiés. Cela supprimera ensuite le fragment et ajoutera à nouveau le fragment. Votre nouvelle localisation doit alors être récupérée.
J'ai enfin trouvé la solution! Il suffit de lancer votre code de mise à jour de la vue dans le fil de l'interface utilisateur.
Exemple -
getActivity().runOnUiThread(new Runnable() {
@Override
public void run() {
user_arrayList.add(name);
adapter.notifyDataSetChanged();
tv_total_users.setText("Total Users : "+user_arrayList.size());
}
});
Enfin trouvé cette solution après avoir essayé pendant presque 4-5 heures!