我有一种方法可以将我的应用程序从英语翻译成瑞典语,如果用户愿意,可以再次返回。但是,我不太喜欢这项活动每次重启的事实,因为它给我带来了savedInstaceState
的困难,而且我因此而遭遇了几次崩溃。
以下是我改变语言的方法:
public void setApplicationLanguage(String language) {
myLocale = new Locale(language);
Resources res = activity.getResources();
DisplayMetrics display = res.getDisplayMetrics();
Configuration configuration = res.getConfiguration();
configuration.locale = myLocale;
res.updateConfiguration(configuration, display);
Intent refresh = new Intent(activity, StartupActivity.class);
activity.startActivity(refresh);
}
如果没有:
,是否有可能应用相同的功能Intent refresh = new Intent(activity, StartupActivity.class);
activity.startActivity(refresh);
答案 0 :(得分:5)
您可以替换代码:
Intent refresh = new Intent(activity, StartupActivity.class);
activity.startActivity(refresh);
使用Activity类的方法:
recreate();
我希望您的最低SDK版本能够支持,因为它是在SDK 11中引入的。您的活动将重新创建为新实例,请记住!一切都将重新开始。根据我的经验,与制作新的Intent
相比,它是快速的。但是如果你想传递一些数据,使用Intent
的方法比这更好!您可以在Intent
添加额外内容。
答案 1 :(得分:3)
Makefile:84: *** missing separator. Stop.
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);
onConfigurationChanged(conf);
/*Intent refresh = new Intent(this, AndroidLocalize.class);
startActivity(refresh);*/
}
@Override
public void onConfigurationChanged(Configuration newConfig) {
// refresh your views here
lblLang.setText(R.string.langselection);
super.onConfigurationChanged(newConfig);
// Checks the active language
if (newConfig.locale == Locale.ENGLISH) {
Toast.makeText(this, "English", Toast.LENGTH_SHORT).show();
} else if (newConfig.locale == Locale.FRENCH){
Toast.makeText(this, "French", Toast.LENGTH_SHORT).show();
}
}
答案 2 :(得分:1)
创建一个单例类:
public class Singleton {
private static Singleton mInstance = null;
private int repeat = 0;
public int getRepeat() {
return repeat;
}
public void setRepeat(int repeat) {
this.repeat = repeat;
}
}
现在您有了一个可以设置和获取数据的方法,因此创建一个方法并将其置于onResume()
方法下,调用您的方法,您可以获取并设置如下数据:
Singleton.getInstance().setRepeat(1);
Singleton.getInstance().getRepeat();
答案 3 :(得分:-3)
您可以在此处使用SharedPreference Concepts。
只需在SharedPreference中保存语言状态即可。每当用户更改语言时将该状态保存到SharedPreference中。