我是这个社区的新成员。首先我要对每个人说 “你好”..... 这是我的第一个问题。这是基于Android应用程序开发。 所以这是我的问题。 我还在开发一个android应用程序。在该应用程序中,我需要开发3种多种语言。
1.English - “en” 2.Chinese(简体) - “zh_” 3.Chinese(繁体) - “zh_TW”
所以我为这些语言添加了字符串资源,并为此实现了代码部分。但不幸的是,它没有工作一段时间。但它正在工作一段时间。我无法识别我的代码的错误。它似乎没有任何错误。
这些是我的测试字符串名称(所有语言)
这是我的代码部分
public class MainActivity extends AppCompatActivity {
private Spinner spinnerctrl;
private Locale myLocale;
@Override
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.activity_main);
spinnerctrl=(Spinner)findViewById(R.id.spinner1);
spinnerctrl.setOnItemSelectedListener(new AdapterView.OnItemSelectedListener() {
public void onItemSelected(AdapterView<?> parent, View view,
int pos, long id) {
if (pos == 1) {
Toast.makeText(parent.getContext(),
"You have selected Chinese(Simplified)", Toast.LENGTH_SHORT)
.show();
saveLocale("zh");
} else if (pos == 2) {
Toast.makeText(parent.getContext(),
"You have selected Chinese(Traditional)", Toast.LENGTH_SHORT)
.show();
saveLocale("zh_TW");
}
else if (pos == 3)
{
Toast.makeText(parent.getContext(),
"You have select English",Toast.LENGTH_SHORT)
.show();
saveLocale("en");
}
}
public void onNothingSelected(AdapterView<?> arg0) {
// TODO Auto-generated method stub
}
});
loadLocale();
@Override
public void onBackPressed()
{
Intent MyProfile = new Intent(getApplicationContext(), MainActivity.class);
startActivity(MyProfile);
finish();
}
public void loadLocale() {
String langPref = "Language";
SharedPreferences prefs = getSharedPreferences("CommonPrefs",
Activity.MODE_PRIVATE);
String language = prefs.getString(langPref, "");
changeLang(language);
}
public void changeLang(String lang) {
if (lang.equals(""))
return;
myLocale = new Locale(lang);
saveLocale(lang);
Locale.setDefault(myLocale);
Resources res = getResources();
DisplayMetrics dm = res.getDisplayMetrics();
Configuration conf = res.getConfiguration();
conf.locale = myLocale;
res.updateConfiguration(conf, dm);
}
public void saveLocale(String lang) {
String langPref = "Language";
SharedPreferences prefs = getSharedPreferences("CommonPrefs",
Activity.MODE_PRIVATE);
SharedPreferences.Editor editor = prefs.edit();
editor.putString(langPref, lang);
editor.commit();
}}
所以这是我的问题。这个代码部分运行时没有任何运行时错误,等等。但是没有工作一段时间。我不知道为什么会这样。所以如果有人可以帮助我解决这个问题,那将是非常大的帮助我。 谢谢。
答案 0 :(得分:0)
public static void changeLocale(Context context, String localeString) {
String locale = "en";
if (localeString != null) {
if (localeString.equals("Malay")) {
locale = "ms";
} else if (localeString.equals("Myanmar")) {
locale = "my";
} else if (localeString.equals("Tamil")) {
locale = "ta";
}
}
Locale myLocale = new Locale(locale);
Resources res = context.getResources();
DisplayMetrics dm = res.getDisplayMetrics();
Configuration conf = res.getConfiguration();
conf.locale = myLocale;
res.updateConfiguration(conf, dm);
}