onConfigurationChange not called after changing locale

后端 未结 3 1650
心在旅途
心在旅途 2020-12-30 06:12

I have to refresh the fragments contents on change of language from one fragment. So I thought of using onConfigurationChange method which is in my Main activity (this activ

相关标签:
3条回答
  • 2020-12-30 06:49

    For others who encounter this issue the OP was right but a bit unclear.
    You have to define android:configChanges="layoutDirection|locale" in order for onConfigurationChanged() to be called.
    I assume that this is necessary because locale change might also affect layout direction (for RTL languages) so declaring just locale might not be enough, yet this is only my assumption on this matter.

    0 讨论(0)
  • 2020-12-30 06:51

    Use layoutDirection attribute in the manifest file.

    0 讨论(0)
  • 2020-12-30 07:06

    You can extend from Application and set it in the manifest. Then, put onConfigurationChanged there, and check if the previous locale is the same as the current one:

    if(!_currentLocale.equals(newConfig.locale))
      {
      _currentLocale=newConfig.locale;
      // locale has changed
      }
    

    The "_currentLocale" variable should be initialized on the onCreate method of the new class (that extends Application), as such:

      @Override
      public void onCreate()
        {
        super.onCreate();
        _currentLocale=getResources().getConfiguration().locale;
        }
    
    0 讨论(0)
提交回复
热议问题