onConfigurationChange not called after changing lo

2019-02-08 16:55发布

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 activity controls all the fragments) and recreate all the fragments on change of locale. But this method is not being called on change of locale.

I have included locale under the activity tag of manifest file. onConfigurationChange is being called on change of orientation.

i am changing language as given in this link Change language programmatically in Android and its working.

Can someone please clarify what change would be required to fix this issue.

3条回答
\"骚年 ilove
2楼-- · 2019-02-08 17:17

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;
    }
查看更多
叼着烟拽天下
3楼-- · 2019-02-08 17:24

user layoutDirection attribute in manifest

查看更多
时光不老,我们不散
4楼-- · 2019-02-08 17:27

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.

查看更多
登录 后发表回答