我的应用程序支持3种语言(英语,法语和阿拉伯语)。我已经翻译了所有的资源(值字符串和drawables文件),并且它根据用户设备中设置的语言完美地工作。
该应用程序主要包含两个活动:mainActivity和Game Activity。 mainActivity包含一个按钮(Play),根据设备语言导致GameActivity。例如,如果语言是英语,它将启动游戏活动,如果f语言是法语,它将启动 GameFr 活动,如果语言是阿拉伯语,它将启动 GameAr < / strong>活动。
var data = [
{ "id" : 1, "label": "USA" },
{ "id" : 2, "label": "Denmark" },
{ "id" : 3, "label": "London" }
];
但是,我想在MainActivity中添加3个ImageView(标志),用户可以通过它更改应用程序的语言,为此我添加了以下内容:
Play.setOnClickListener(new View.OnClickListener() {
@Override
public void onClick(View v) {
// TODO Auto-generated method stub
if (Locale.getDefault().getLanguage().equals("ar")){
Intent intgame=new Intent(MainActivity.this,GameAr.class);
startActivity(intgame);
}
else {
if (Locale.getDefault().getLanguage().equals("fr")){
Intent intgame=new Intent(MainActivity.this,GameFr.class);
startActivity(intgame);
}
else {
Intent intgame=new Intent(MainActivity.this,Game.class);
startActivity(intgame);
}
}
}
});
尽管如此,如果用户使用该语言设置为英语的设备,请单击法国标志,它将成功进行法语活动。但是,如果他回到上一页并单击按钮(播放),则显示的页面是与英语活动相对应的页面,但资源(字符串值和Drawables)为法语。
这是因为以下功能:
en = (ImageView) findViewById(R.id.en);
fr = (ImageView) findViewById(R.id.fr);
ar = (ImageView) findViewById(R.id.ar);
en.setOnClickListener(new View.OnClickListener() {
@Override
public void onClick(View v) {
setLocale("en");
Intent uo = new Intent(MainActivity.this,Game.class);
startActivity(uo);
}
});
fr.setOnClickListener(new View.OnClickListener() {
@Override
public void onClick(View v) {
setLocale("fr");
Intent uo = new Intent(MainActivity.this,GameFr.class);
startActivity(uo);
}
});
ar.setOnClickListener(new View.OnClickListener() {
@Override
public void onClick(View v) {
setLocale("ar");
Intent uo = new Intent(MainActivity.this,GameAr.class);
startActivity(uo);
}
});
始终测试设备的语言,而不是用户在应用中选择的语言。
是否有一个函数可以给我SetLocale函数选择的语言?或者我应该在活动之间使用变量转移?
我该如何解决这个问题,你有更好的建议吗?
答案 0 :(得分:0)
使用此
Locale.setDefault("Your Locale");