编辑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)
?
注意'当前实现'完全正常,但鼓励不使用已弃用的代码想要替换工作
不确定是否是你的需要,你可以改变这样的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);
}