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

20
demandé sur Leem.fin 2012-03-27 16:02:32

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

35
répondu ZeeShaN AbbAs 2013-05-08 12:14:49

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.

2
répondu Mimminito 2012-03-27 12:10:01

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!

0
répondu Mayank Agarwal 2018-09-15 19:38:59