日期选择器不会在我的应用程序的其余部分更改其语言

问题描述

我有一个应用程序,它有一个按钮,用于更改此应用程序内的语言。唯一不受变化影响的是 DatePicker

更改我的应用语言的代码

polishLanguage.setonClickListener(new View.OnClickListener(){

        @Override
        public void onClick(View v) {
            restartActivityInLanguage("pl");
        }
        
    });

private void restartActivityInLanguage(String language) {
    Locale locale = new Locale(language);
    Configuration config = new Configuration();
    config.locale = locale;
    config.setLocale(locale);
    Resources resources = getResources();
    resources.updateConfiguration(config,resources.getdisplayMetrics());
    getActivity().recreate();
}

xml 中的 DatePicker 代码

<DatePicker
                    android:id="@+id/datePicker"
                    android:layout_width="match_parent"
                    android:layout_height="wrap_content"
                    android:layout_gravity="center"
                    android:layout_marginTop="-25dp"
                    android:layout_marginBottom="-25dp"
                    android:calendarViewShown="false"
                    android:datePickerMode="spinner" />

Java 中的 DatePicker 代码

product_expirationDate_datepicker = new DatePicker(getActivity().getApplicationContext());

    Calendar today = Calendar.getInstance();
    long Now = today.getTimeInMillis();
    product_expirationDate_datepicker.setMinDate(Now);

    product_expirationDate_datepicker.init(today.get(Calendar.YEAR),today.get(Calendar.MONTH),today.get(Calendar.DAY_OF_MONTH),new DatePicker.OnDateChangedListener() {

        @Override
        public void onDateChanged(DatePicker datePicker,int year,int month,int dayOfMonth) {
            int selctedMonth = month + 1;
            expirationDateString = (product_expirationDate_datepicker.getYear() + "-" + selctedMonth + "-" + product_expirationDate_datepicker.getDayOfMonth());
            Log.e("onDateChanged","expirationDateString: " + expirationDateString);

            HAS_DATE_BEEN_CHANGED = true;

        }
    });

logcat 没有错误,只是语言没有改变。我已经尝试过: Set language to French in android DatePickerDialoghttps://gist.github.com/gilbertwat/4631571 但没有任何效果

解决方法

new DatePicker(getActivity().getApplicationContext());

为您的日期选择器使用 Activity 而不是 Application 上下文。

您的语言更改代码只会覆盖活动上下文资源。无论如何,活动上下文是用于用户界面小部件的正确上下文。