Android 谷歌地图缓存问题

Android 谷歌地图缓存问题,android,google-maps,Android,Google Maps,我在活动中使用谷歌地图。 当我在应用程序设置中更改语言(例如中文)时 直到我重新打开我的应用程序,地图的语言才改变 Locale locale = new Locale(languageToLoad); Locale.setDefault(locale); Configuration config = new Configuration(); config.locale = locale; getBaseContext().getResources().updateConfiguration(c

我在活动中使用谷歌地图。 当我在应用程序设置中更改语言(例如中文)时 直到我重新打开我的应用程序,地图的语言才改变

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);

我搜索了很多关于这个问题的信息,发现这是谷歌地图缓存问题,但没有找到任何解决方案。

我可以考虑两个选项来解决这个问题:

  • 在onConfigurationChanged方法中调用setContentView

    @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
        }
    }
    
    @Override
    public void onConfigurationChanged(Configuration newConfig) {
        super.onConfigurationChanged(newConfig);
        if (language_changed){//pseudo_code
             startActivity(CurrentActivity.this, CurrentActivity.class);
             finish();
        }
    }
    

  • 在onConfigurationChanged方法中重新启动活动

    @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
        }
    }
    
    @Override
    public void onConfigurationChanged(Configuration newConfig) {
        super.onConfigurationChanged(newConfig);
        if (language_changed){//pseudo_code
             startActivity(CurrentActivity.this, CurrentActivity.class);
             finish();
        }
    }
    
  • 我没有测试过这个,但也许这是解决你问题的起点


    不要忘记将
    android:configChanges=“locale”
    添加到
    AndroidManifest.xml
    中的活动标记中,让系统知道您想自己处理语言环境的更改。如果需要,请阅读更多内容

    您可以使用具有区域设置更改意图的BroadcastReceiver来检测设置更改,然后更新视图(地图视图或总体布局)。


    您是否尝试过在OnConfiguration Changed Activity方法中处理此问题?我尝试过此方法,但不起作用…..即使在我重新打开Activity时它也不起作用…它只在应用程序重新打开时起作用。谢谢您的回答,但它不起作用。。。我已经试过了…即使我手动重新启动活动,它也不起作用。。。仅在应用程序重新启动的情况下有效。是否已在活动标记中添加configChanges属性?阅读我回答的最后两行,我可以肯定地说你在某处做错了什么。您无法处理地图区域设置的更改。祝您好运,更多地调试您的代码;)