MyApp測試是多語言變化。 http://www.androhub.com/android-building-multi-language-supported-app/選擇單選按鈕後,它會更改當前活動中的語言。但是當我回到以前的活動時,它不會改變語言。所以,當我點擊返回按鈕時,我想回想一下創建。或者如何刷新當前活動?如何在onBackPressed()時回顧onCreate()並轉到之前的活動?
的onCreate()
@Override
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.activity_main3);
txt = (TextView) findViewById(R.id.txt);
radioGroup = (RadioGroup) findViewById(R.id.radioGroup);
radioEng = (RadioButton) findViewById(R.id.eng);
radiohi = (RadioButton) findViewById(R.id.hi);
// Initialization
pref = getSharedPreferences("MyPref", Activity.MODE_PRIVATE);
editor = pref.edit();
radioGroup.setOnCheckedChangeListener(new RadioGroup.OnCheckedChangeListener() {
@Override
public void onCheckedChanged(RadioGroup radioGroup, @IdRes int i) {
String lang = "en"; // Default Language
switch (i) {
case R.id.eng:
lang = "en";
break;
case R.id.hi:
lang = "hi";
break;
default:
break;
}
changeLocale(lang); // Change Locale on selection basis
}
});
loadLocale();
}
changeLocale
private void changeLocale(String lang) {
if (lang.equalsIgnoreCase(""))
return;
Locale myLocale = new Locale(lang); // Set Selected Locale
saveLocale(lang); // Save the selected locale
Locale.setDefault(myLocale); // set new locale as default
Configuration config = new Configuration(); // get Configuration
config.locale = myLocale; // set config locale as selected locale
getBaseContext().getResources().updateConfiguration(config, getBaseContext().getResources().getDisplayMetrics()); // Update the config
}
saveLocale & loadLocale
private void saveLocale(String lang) {
editor.putString("save", lang);
editor.commit();
if (lang.equals("en")) {
radioEng.setChecked(true);
} else {
radiohi.setChecked(true);
}
}
private void loadLocale() {
String lang = pref.getString("save", "");
if (lang.equals("")) {
radioEng.setChecked(true);
} else {
changeLocale(lang);
}
}
我覺得不記得在後面的按鈕按下創建。使用onResume來完成你的邏輯。例如,如果您正在提取文本並將其設置爲EditText上的提示,那麼在返回返回按鈕後,按照您的需要再次設置提示文本。 – Abhishek
之前的活動已經在任務堆棧中(已經在內存中)。一旦在當前活動中更改了語言並按回按鈕,它將導航到堆棧中的上一個活動。它不會重新加載之前的活動,它只會使以前的活動可見。所以我認爲改變MainActivity中的語言或啓動器活動總是更好。 – Yatish