wake-up-neo.com

Kann die Ansicht eines Fragments aktualisiert werden?

Ich änderte die locale meiner Anwendung programmgesteuert wie folgt:

Resources res = context.getResources();

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

Danach möchte ich refresh meiner aktuell angezeigten Fragmentansicht mit neuen Gebietsschemaeinstellungen anzeigen.

Also bekomme ich zuerst das aktuelle Fragment (das ist das neueste in backstack):

BackStackEntry latestEntry=fragMgr.getBackStackEntryAt(fragMgr.getBackStackEntryCount()-1);
String str=latestEntry.getName();
Fragment fragment=fragMgr.findFragmentByTag(str);

Nachdem ich das aktuell angezeigte Fragment erhalten habe, möchte ich refresh its view . Ist es in Android möglich, die Ansicht eines Fragments zu aktualisieren

21
Leem.fin

Sie können das Fragment einfach wie unten abnehmen und anhängen

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

Dadurch wird die Ansicht aktualisiert und das Gebietsschema wird geändert

35
ZeeShaN AbbAs

Sie könnten einen Listener erstellen, der aufgerufen wird, wenn sich das Gebietsschema ändert. Dadurch wird das Fragment entfernt und das Fragment erneut hinzugefügt. Ihr neues Gebietsschema sollte dann abgeholt werden.

2
Mimminito

Ich habe endlich die Lösung dafür gefunden! Führen Sie einfach Ihren Ansichtsaktualisierungscode im UI-Thread aus

Beispiel - 

 getActivity().runOnUiThread(new Runnable() {
            @Override
            public void run() {
                user_arrayList.add(name);
                adapter.notifyDataSetChanged();
                tv_total_users.setText("Total Users : "+user_arrayList.size());
            }
        });

Endlich diese Lösung gefunden, nachdem Sie fast 4-5 Stunden versucht hatten!

0
Mayank Agarwal