编辑2
编辑
覆盖attachBaseContext方法以更新活动中的上下文
protected override void AttachBaseContext(Context @base)
{
base.AttachBaseContext(@base);
}
结束编辑
在Android API 25中,Resources.UpdateConfiguration(Configuration, DisplayMetrics)
已过时,建议改用Context context = CreateConfigurationContext(Configuration);
。
当前实施
public override Resources Resources
{
get
{
Resources res = base.Resources;
Configuration config = new Configuration();
config.SetToDefaults();
res.UpdateConfiguration(config, res.DisplayMetrics);
return res;
}
}
参考Android context.getResources.updateConfiguration() deprecated作为指南,尝试了以下操作:
public override Resources Resources
{
get
{
Configuration overrideConfiguration = base.Resources.Configuration;
overrideConfiguration.SetToDefaults();
Context context = CreateConfigurationContext(overrideConfiguration);
Resources res = context.Resources;
return res;
}
}
但是这会产生异常错误。
Android.Views.InflateException: Error inflating class
com.android.internal.widget.DialogTitle
如何正确实施Context context = CreateConfigurationContext(Configuration)
?
请注意,“当前实现”可以很好地运行,但是建议不要使用不推荐使用的代码来替换它
答案 0 :(得分:1)
不确定是否是您的需要,可以像这样更改 attachBaseContext 方法,它可以工作:
protected override void AttachBaseContext(Context @base)
{
Configuration overrideConfiguration = new Configuration();
overrideConfiguration = @base.Resources.Configuration;
overrideConfiguration.SetToDefaults();
Context context = @base.CreateConfigurationContext(overrideConfiguration);
base.AttachBaseContext(context);
}