2017-05-19 3 views
-2

Ich arbeite mit Google Map in meiner Tätigkeit. Wenn ich die Sprache für zB Chinesisch in meinen App-Einstellungen ändere, änderte sich die Sprache der Karte nicht, bis ich meine App wieder öffne.Google Map Caching Problem

Ich habe viel über dieses Problem gesucht Ich habe festgestellt, dass es Google Map Caching-Problem ist, aber keine Lösung gefunden.

+0

Haben Sie dies in der onConfigurationChanged Aktivität Methode zu behandeln versucht? – MatPag

+0

Ich habe das versucht, aber nicht funktioniert ..... auch es funktioniert nicht, falls ich die Aktivität wieder öffnen ... es funktioniert nur auf App wieder öffnen. – Manish

Antwort

1

kann ich darüber nachdenken, 2 Möglichkeiten, diese zu lösen:

  1. Aufruf setContentView im onConfigurationChanged Methode

    @Override 
    public void onConfigurationChanged(Configuration newConfig) { 
        super.onConfigurationChanged(newConfig); 
        if (language_changed){//pseudo_code 
         Locale locale = new Locale(languageToLoad); 
         Locale.setDefault(locale); 
         Configuration config = new Configuration(); 
         config.locale = locale; 
         getBaseContext().getResources().updateConfiguration(config, 
           getBaseContext().getResources().getDisplayMetrics()); 
    
         setContentView(R.layout.activity_maps); 
         //now you need to do again all the findViewById call 
        } 
    } 
    

  1. Starten Sie die Aktivität in der onConfigurationChanged-Methode

    neu
    @Override 
    public void onConfigurationChanged(Configuration newConfig) { 
        super.onConfigurationChanged(newConfig); 
        if (language_changed){//pseudo_code 
         startActivity(CurrentActivity.this, CurrentActivity.class); 
         finish(); 
        } 
    } 
    

ich nicht getestet habe, aber es ist vielleicht ein Ausgangspunkt, um zu versuchen, Ihr Problem zu lösen.

Vergessen Sie nicht, Ihrem Aktivitäts-Tag AndroidManifest.xmlandroid:configChanges="locale" hinzuzufügen, damit das System weiß, dass Sie die Gebietsschema-Änderungen selbst vornehmen möchten. Weitere Informationen finden Sie unter here

+0

danke für deine antwort, aber es funktioniert nicht ... ich habe es schon ausprobiert..auch wenn ich die aktivität manuell neu starte funktioniert es nicht ... funktioniert nur im fall der app wieder öffnen – Manish

+0

Hast du das configChanges Attribut im activity tag hinzugefügt ? Lesen Sie die letzten 2 Zeilen meiner Antwort – MatPag

+0

ja versucht, aber nicht funktioniert ... – Manish

0

Sie können BroadcastReceiver mit LOCALE_CHANGED Intent verwenden, um Einstellungsänderungen zu erkennen, und dann Ihre Ansicht aktualisieren (Kartenansicht oder Gesamtlayout). https://developer.android.com/reference/android/content/Intent.html#ACTION_LOCALE_CHANGED

public class LocaleReceiver extends BroadcastReceiver { 
    public LocaleReceiver() {} 

    @Override 
    public void onReceive(Context context, Intent intent) { 

    if(Intent.ACTION_LOCALE_CHANGED.equals(intent.getAction())){ 
     // Call a method to trigger view refreshing here 
     } 
    } 
}