Локализация меню Android &

Я хотел бы изменить язык (локаль приложения) программно.

Основная проблема для меня обновляет маркировки меню.

Я попробовал следующий метод:

 @Override
public boolean onMenuOpened(int featureId, Menu menu) {
    if (shouldChangeMenuLabels) {
        for (int i = 0; i < menu.size(); i++) {
            MenuItem menuItem = menu.getItem(i);
            switch (menuItem.getItemId()) {
                case R.id.menu_main_about:
                    menuItem.setTitle(R.string.menu_about);
                    break;
                case R.id.menu_main_preferences:
                    menuItem.setTitle(R.string.menu_prefs);
                    break;
            }
        }
        shouldChangeMenuLabels = false;
    }

Но я уверен это плохо идея. Я хочу избегать использования оператора case оператора switch, поскольку это не универсальный метод (я не могу просто портировать отрезанный на другие операции / я не могу сделать абстрактный класс, который сделал бы это).


BTW, все меню были описаны в файлы menu/*.xml, таким образом, я не хочу копировать код. У кого-либо есть идеи?

Затронутый для первого ответа: Я hae изменил локаль со следующим кодом:

            Locale locale = new Locale((String)newValue);
            Locale.setDefault(locale);
            Configuration config = new Configuration();
            config.locale = locale;
            getApplication().getResources().updateConfiguration(config, getApplication().getResources().getDisplayMetrics());

Но поскольку я хочу управлять вращением для каждого действия, они никогда не заканчиваются. Возможно, я сделал что-то не так?

5
задан davs 3 August 2010 в 05:31
поделиться