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
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
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.
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!