2016-06-15 4 views
0

Я создаю ListPreference с несколькими языками в меню настроек моего приложения. Я использовал следующий код для изменения языка, основанный на выборе пользователя:Изменение языка приложения после перезапуска приложения

findPreference("language_list").setOnPreferenceChangeListener(new OnPreferenceChangeListener() { 
     @Override 
     public boolean onPreferenceChange(Preference preference, Object newValue) { 
      String loadLanguage = (String) newValue; 
      Locale locale = null; 
      if (loadLanguage.equals("en")) { 
       locale = new Locale("en"); 

      } else if (loadLanguage.equals("ku")) { 
       locale = new Locale("ku"); 

      } else if(loadLanguage.equals("ar")){ 
       locale = new Locale("ar"); 

      }else if(loadLanguage.equals("tr")){ 
       locale = new Locale("tr"); 
      } 
      else if(loadLanguage.equals("fr")){ 
       locale = new Locale("fr"); 
      } 

      Locale.setDefault(locale); 
      Configuration config = new Configuration(); 
      config.locale = locale; 
      getActivity().getResources().updateConfiguration(config, 
        getActivity().getResources().getDisplayMetrics()); 
      return true; 
     } 
    }); 

код работает, но необходимо перезапустить приложение (выход и запустить его снова) до изменения языка быть сделано полностью. с вышеуказанным кодом часть приложения останется и не изменится, даже если они не работают.

не могли бы вы дать мне представление, что я должен сделать для этого?

Спасибо

+0

Check [это] (http://stackoverflow.com/a/25175129/3831557) раствор я предложил в другом сообщении SO. Вы можете использовать его после внесения некоторых поправок. –

+0

Из интереса, является ли цель этого приложения интенсивным? Языковые настройки могут быть установлены по умолчанию в устройстве, поэтому просто интересно, есть ли причина, чтобы сделать языковое приложение конкретным. Не спрашивайте о своей работе, просто интересно. – zgc7009

+0

@RajenRaiyarela это звучит неплохо, но у меня есть много кода, и для меня не самое лучшее, чтобы изменить все коды, как вы думаете, это не какое-то решение для завершения моей работы и исправления ошибок? – Sir1

ответ

0

Вы можете программно перезапустить приложение в Hacky, как ответил @Oleg Кошин here

+0

Есть ли другое решение, кроме перезапуска приложения? – Sir1

+0

использовать 'startActivity()' для запуска вашей основной деятельности и 'finish()' текущий (ы)? – user3673952