Android, как изменить язык приложения во время выполнения

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

Вы можете использовать этот код в spinner или любым способом, который вы хотите

String languageToLoad = "en"; // your language Locale locale = new Locale(languageToLoad); Locale.setDefault(locale); Configuration config = new Configuration(); config.locale = locale; getBaseContext().getResources().updateConfiguration(config, getBaseContext().getResources().getDisplayMetrics()); 

То вы должны сохранить язык, подобный этому

 SharedPreferences languagepref = getSharedPreferences("language",MODE_PRIVATE); SharedPreferences.Editor editor = languagepref.edit(); editor.putString("languageToLoad",languageToLoad ); editor.commit(); 

И использовать один и тот же код в каждом onCreate() в onCreate() для загрузки languageToLoad из SharedPreferences

Используйте SharedPreferences, чтобы отслеживать язык, который выбрал пользователь, а затем задайте действия для использования этого языка в методе onCreate () и, возможно, onResume (). Таким образом, он будет сохраняться через перезагрузки приложений и т. Д.

Это старый вопрос, но я все равно отвечу 🙂 Вы можете расширить класс Application, чтобы применить решение Abol3z для каждого действия. Создать класс:

 public class MyApplication extends Application { @Override public void onCreate() { super.onCreate(); SharedPreferences preferences = PreferenceManager.getDefaultSharedPreferences(this); String lang = preferences.getString("lang", "en"); Locale locale = new Locale(lang); Locale.setDefault(locale); Configuration config = new Configuration(); config.locale = locale; getBaseContext().getResources().updateConfiguration(config, getBaseContext().getResources().getDisplayMetrics()); } } 

И установите MyApplication как класс приложения в манифесте:

  <application android:name=".MyApplication" ... /> 

Вы можете установить значение lang (в вашем счетчике):

 SharedPreferences preferences = PreferenceManager.getDefaultSharedPreferences(getContext()); preferences.edit().putString("lang", "en").commit(); 
 btnChange.setOnClickListener(new View.OnClickListener() { @Override public void onClick(View v) { SharedPreferences preferences = PreferenceManager.getDefaultSharedPreferences(mContext); //preferences.edit().putString("lang", "bn").commit(); String lang = preferences.getString("lang", "en"); //Log.e("lang", "lang in Main Activity:"+lang); if (lang.equalsIgnoreCase("en")){ setLocale("bn"); preferences.edit().putString("lang", "bn").commit(); btnChange.setText("Eng"); }else if(lang.equalsIgnoreCase("bn")){ setLocale("en"); preferences.edit().putString("lang", "en").commit(); btnChange.setText("বাংলা"); } } }); public void setLocale(String lang) { myLocale = new Locale(lang); Resources res = getResources(); DisplayMetrics dm = res.getDisplayMetrics(); Configuration conf = res.getConfiguration(); conf.locale = myLocale; res.updateConfiguration(conf, dm); Intent refresh = new Intent(this, MainActivity.class); startActivity(refresh); finish(); } 

Мы используем два языка для целей тестирования. Сохранить всю строку в разных папках с именами значений и значений -bn.

Intereting Posts
Android Lollipop, приложение AppCompat ActionBar не учитывает ширину всего экрана Как предоставить временный доступ к производителю пользовательского контента с помощью FLAG_GRANT_READ_URI_PERMISSION Получить счетчик с помощью cursor.getCount () или выполнить rawQuery с COUNT в SQL-предложение? Отображение изображений с эффектом карусели в android Расширяемый GridView с возможностью просмотра в Android Изменение диалогового сообщения о ходе выполнения при запуске Как уменьшить размер пользовательского кода для приложения Xamarin Forms в Visual Studio 2015? Как отключить мое приложение sms как приложение по умолчанию в Android Как добавить действия в меню переполнения на Galaxy S3? Отправка изображения по электронной почте, Android? Потоковое видео с php-сервера на Android Как добавить отдельный элемент меню на панель инструментов в Android? Использование Android RecognizerIntent с Bluetooth-гарнитурой Android – как заставить ребенка переопределить родительский метод с кодом Время выполнения приложения