19

Ich habe die locale meine Anwendung programmatisch, wie folgt zu aktualisieren:Ist es möglich, die Ansicht eines Fragments

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 würde Ich mag zu meines aktuell angezeigten Fragmente aktualisiert Ansicht Anzeige mit neuen Gebietsschemaeinstellungen.

Also, ich zunächst das aktuelle Fragment (das ist das späteste in backstack):

Nachdem ich das zur Zeit zeigt Fragment erhalten, würde Ich mag zu seine Ansicht aufzufrischen, aber wie es zu tun? Ist es in Android möglich, die Ansicht eines Fragments zu aktualisieren?

+0

ändern meinen Sie die Ansicht ungültig? – Blackbelt

+0

@blackbelt, Nein, ich meine aktualisieren, genauso wie es auf einer Webseite funktioniert, wenn Sie eine Sprache von einer Webseite auswählen, wird die Seite aktualisiert. –

Antwort

2

Sie könnten einen Listener erstellen, der aufgerufen wird, wenn sich das Gebietsschema ändert. Dies wird dann das Fragment entfernen und das Fragment erneut hinzufügen. Ihr neues Gebietsschema sollte dann abgeholt werden.

+3

Wo sollte der Listener erstellt werden? Kannst du bitte genauer sagen, wie es geht? –

+0

Erstellen Sie Ihre eigene Schnittstelle, die Ihre Aktivität implementiert. Dann registrieren Sie den Listener mit Ihrem Fragment in onAttach(). Wenn Sie das Gebietsschema ändern, rufen Sie die Methode in der Schnittstelle auf und entfernen/fügen Sie das Fragment erneut hinzu. – Mimminito

35

können Sie einfach lösen und befestigen Fragment wie unten

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

Dies wird aktualisieren Sie die Ansicht und das Gebietsschema wird

+0

Aber wie kann ich einige Daten an ein Fragment senden? Ich bekomme jetzt eine leere Sicht auf die Spitze. –

+0

Wie senden Sie Daten an ein Fragment? Sie sollten fragment.setArguments (Bundle-Extras) verwenden; Methode, um Daten zu übergeben. Wenn Sie das Fragment aktualisieren, bleiben die Daten erhalten, so dass Sie kein Problem haben. –

+0

Ja, ich tue dies, aber der Fragment-Lebenszyklus wird nicht für die MyFragment-Klasse aufgerufen. –

Verwandte Themen