问题是我想在用户更改微调器的选择时刷新我的活动 我有3种语言英语 - 西班牙语 - 法语。 选择其中一个时,活动应将布局更改为所选语言布局 。 我有旋转器和textView显示消息。
下一个代码不能与我合作重启活动,但后面的语言不是wt用户选择默认值并重复重新启动应用程序:
@Override
public void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
// Get the view from activity_main.xml
setContentView(R.layout.activity_main);
textview = (TextView) findViewById(R.id.text);
cnt=this;
spin=(Spinner) findViewById(R.id.language_spinner_login);
ArrayAdapter<CharSequence> languageAdapter = ArrayAdapter
.createFromResource(cnt,
R.array.lang,
android.R.layout.simple_spinner_item);
spin.setAdapter(languageAdapter);
spin.setOnItemSelectedListener(new OnItemSelectedListener() {
public void onItemSelected(AdapterView<?> parent, View view,
int pos, long id) {
if (pos == 0) {
setLocale("fr");
} else if (pos == 1) {
setLocale("en");
}
else if (pos == 2) {
setLocale("sp");
}
}
public void onNothingSelected(AdapterView<?> arg0) {
// TODO Auto-generated method stub
}
});
textview.setText(string.hello_world);
}
public void setLocale(String lang) {
Locale 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(cnt, MainActivity.class);
startActivity(refresh);
}
2秒Q我想在下次用户打开应用程序时将所选项目保存到微调器中,微调器选择的项目应该是用户上次选择的重量。
答案 0 :(得分:0)
保持选定的区域设置优先
SharedPreferences p = PreferenceManager.getDefaultSharedPreferences(context);
p.edit().putString("selected_locale", locale).commit();
并在需要再次设置时获取
String locale = p.getString("selected_locale", "");
每次都不要调用setLocale()方法。因为当你尝试设置微调器时,将再次调用setLocale。这是你的问题吗?
修改:
试试这个。 http://snowpard-android.blogspot.in/2013/03/programmatically-change-language-in.html
根据您的需要进行修改:)