我有非常简单的spinnser,其中我显示两个值1 =>英语2 =>希伯来语
我重新启动整个活动(更改用户界面)从微调器中选择任何值,但问题是我的活动只是重启案例1,请帮我解决问题。
以下是我正在使用的代码
languageSpinner.setOnItemSelectedListener(new AdapterView.OnItemSelectedListener() {
@Override
public void onItemSelected(AdapterView<?> parent, View view, int position, long id) {
if (!isFistLaunch) {
String email = mEmailEditText.getText().toString();
String pass = mPasswordEditText.getText().toString();
Intent intent = new Intent(MainActivity.this, MainActivity.class);
intent.putExtra("typed_email", email);
intent.putExtra("typed_pass", pass);
mUserSession.setUserLanguage(lang[position]);
Toast.makeText(MainActivity.this, "Spinner position = " + position, Toast.LENGTH_SHORT).show();
startActivity(intent);
MainActivity.this.finish();
} else {
isFistLaunch = false;
}
}
@Override
public void onNothingSelected(AdapterView<?> parent) {
}
});
我也在旁边举杯,但它只显示了一次......
Spinner正如我想要的那样工作但仅限于我的设备。所有其他设备都没有为希伯来语显示任何祝酒词。他们只为英语显示Toast。
谁能告诉我这里有什么问题?感谢
答案 0 :(得分:0)
为了切换您应用的语言,我建议您参考以下代码:
protected static void setLocale(Context context, String language) {
// if not exist, set EN as default
Locale locale = new Locale(language);
final Locale[] availableLocales=Locale.getAvailableLocales();
if (!(Arrays.asList(availableLocales).contains(locale))) {
locale = new Locale("en");
}
Locale.setDefault(locale);
Configuration config = new Configuration();
config.locale = locale;
((Activity) context).getBaseContext().getResources().updateConfiguration(config,
((Activity) context).getBaseContext().getResources().getDisplayMetrics());
// refresh activity to reload resources
Intent refresh = ((Activity) context).getIntent();
((Activity) context).overridePendingTransition(0, 0);
refresh.addFlags(Intent.FLAG_ACTIVITY_NO_ANIMATION);
((Activity) context).finish();
((Activity) context).overridePendingTransition(0, 0);
context.startActivity(refresh);
}
protected static void switchLocale(Context context) {
Locale current = context.getResources().getConfiguration().locale;
if (current.getLanguage().equals("he")){
setLocale(context, "en");
} else {
setLocale(context, "he");
}
}
然后,在onClick
的{{1}}内或Button
的{{1}} ...内,您可以拨打onItemSelected
P / S:英语资源将存储在Spinner
,希伯来语资源将存储在switchLocale(mContext);
您可以在Google's Doc - Supporting Different Languages了解更多信息。
希望这有帮助!