Android 上实现微信微博上的应用语言切换

514 查看

核心代码

Resources resources = context.getResources();
Configuration configuration = resources.getConfiguration();
DisplayMetrics displayMetrics = resources.getDisplayMetrics();
configuration.locale = getLocale(language);
resources.updateConfiguration(configuration, displayMetrics);

然后写一个ListPreference

@Override
public void onSharedPreferenceChanged(SharedPreferences sharedPreferences, String key) {
    Intent intent = new Intent(activity, MainActivity.class);
    intent.putExtra("setLanguage", true);
    activity.startActivity(intent);
    activity.finish();
}

不知道为什么再进入Fragment里面调用getActivity会返回null
所以就在OnAttach里面

@Override
public void onAttach(Activity activity) {
    super.onAttach(activity);
    this.activity = activity;
}

然后在MainActivity的OnNewIntent里面重启Activity

@Override
protected void onNewIntent(Intent intent) {
    super.onNewIntent(intent);
    if (intent.getExtras()!=null){
        if (intent.getExtras().getBoolean("setLanguage",false)){
            MainActivity.this.finish();
            startActivity(new Intent(this, MainActivity.class));
        }
    }
}

然后在onCreate里面调用核心代码