我创建了新
BaseActivity.class
并将该类扩展到主屏幕,
public abstract class BaseActivity extends AppCompatActivity {
@Override
protected void onCreate(@Nullable Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(getLayoutResourceId());
}
protected abstract int getLayoutResourceId();
@Override
protected void attachBaseContext(Context newBase) {
String language = AppSettings.getInstance(newBase).getLanguage();
super.attachBaseContext(LocaleHelper.wrap(newBase, language));
}
private static class LocaleHelper extends ContextWrapper {
public LocaleHelper(Context base) {
super(base);
}
public static ContextWrapper wrap(Context context, String language) {
if (TextUtils.isEmpty(language.trim())) {
return new LocaleHelper(context);
}
Configuration config = context.getResources().getConfiguration();
Locale locale = new Locale(language);
Locale.setDefault(locale);
if (Build.VERSION.SDK_INT >= Build.VERSION_CODES.N) {
config.setLocale(locale);
} else {
//noinspection deprecation
config.locale = locale;
}
if (Build.VERSION.SDK_INT >= Build.VERSION_CODES.JELLY_BEAN_MR1) {
config.setLayoutDirection(locale);
context = context.createConfigurationContext(config);
} else {
//noinspection deprecation
context.getResources().updateConfiguration(config, context.getResources().getDisplayMetrics());
}
return new LocaleHelper(context);
}
} // LocaleHelper
}
这是HomeActivity上的代码修改,
public class HomeActivity extends BaseActivity {
@Override
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
//setContentView(R.layout.activity_home);
ButterKnife.bind(this);
}
@Override
protected int getLayoutResourceId() {
return R.layout.activity_home;
}
}