Est-il possible de rafraîchir la vue d'un Fragment
j'ai changé le locale
ma demande par programmation 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 ma vue de fragment actuellement affichée pour l'afficher avec de nouveaux paramètres de localisation.
donc, j'obtiens d'abord le fragment courant (c'est le dernier en backstack
):
BackStackEntry latestEntry=fragMgr.getBackStackEntryAt(fragMgr.getBackStackEntryCount()-1);
String str=latestEntry.getName();
Fragment fragment=fragMgr.findFragmentByTag(str);
Après je reçois actuellement montrant fragment, je voudrais actualiser ses view, mais comment le faire? Est-il possible dans Android de rafraîchir la vue d'un fragment
3 réponses
Vous pouvez simplement détacher et attacher fragment comme ci-dessous
Fragment currentFragment = getFragmentManager().findFragmentByTag("FRAGMENT");
FragmentTransaction fragTransaction = getFragmentManager().beginTransaction();
fragTransaction.detach(currentFragment);
fragTransaction.attach(currentFragment);
fragTransaction.commit();
cela rafraîchira la vue et la locale changera
vous pouvez créer un listener, qui sera appelé lorsque la locale change. Ceci enlèvera alors le Fragment, et ré-ajoutera le Fragment. Votre nouveau lieu devrait alors être repris.
j'ai enfin trouvé la solution! Il suffit d'exécuter votre code de mise à jour de vue dans le thread UI
Exemple
getActivity().runOnUiThread(new Runnable() {
@Override
public void run() {
user_arrayList.add(name);
adapter.notifyDataSetChanged();
tv_total_users.setText("Total Users : "+user_arrayList.size());
}
});
finalement trouvé cette solution après avoir essayé pendant presque 4-5 heures!