web-dev-qa-db-fra.com

Est-il possible d'actualiser la vue d'un fragment

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

21
Leem.fin

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

35
ZeeShaN AbbAs

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.

2
Mimminito

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!

0
Mayank Agarwal