【发布时间】:2013-12-04 22:29:35
【问题描述】:
我是一名刚接触 Java 和 Android 的 .NET 开发人员。我从平台开始进行一些单元测试,我有一个我想测试的日期方法,它将当前的context 作为参数。我想 moc 这个上下文并指定我选择的区域设置,而与当前设备设置无关。
这可能吗?谁能告诉我该怎么做?
我尝试创建一个自定义类来扩展 Application 并覆盖 onCreate 方法,在那里设置语言环境。然后我通过调用getApplicationContext() 方法将它传递到我的方法中,但这似乎并没有起到作用。这是我尝试过的:
class UKApplication extends Application
{
@Override
public void onCreate()
{
super.onCreate();
Locale locale = new Locale("en_GB");
Locale.setDefault(locale);
Configuration config = new Configuration();
config.locale = locale;
getBaseContext().getResources().updateConfiguration(config,
getBaseContext().getResources().getDisplayMetrics());
}
}
我也尝试设置似乎更接近的上下文配置,但是当我提取日期格式时,它似乎不会影响日期格式。
Locale locale = new Locale("en_GB");
Locale.setDefault(locale);
Configuration config = new Configuration();
config.locale = locale;
mContext.getResources().updateConfiguration(config, mContext.getResources().getDisplayMetrics());
myStaticClass.methodToTest(mContext);
有什么建议吗?
这是使用上下文获取日期格式的代码。模式似乎总是以 MM/dd/yyyy 的形式出现:
final DateFormat shortDateFormat = android.text.format.DateFormat.getDateFormat(context.getApplicationContext());
if (shortDateFormat instanceof SimpleDateFormat) {
final String pattern = ((SimpleDateFormat) shortDateFormat).toPattern();
谢谢!
【问题讨论】:
-
嗯,你提到的实际日期方法是什么样的? (其输出应受
en_GB语言环境影响的代码。) -
@Jonik 添加了代码