Android - 在应用程序本身内更改区域设置语言

Android - Changing Locale language within the app itself

我的应用程序支持 3 种语言(英语、法语和阿拉伯语)。我已经翻译了所有资源(值字符串和可绘制文件),它根据用户设备中设置的语言完美运行。

该应用程序主要由两个活动组成:主要Activity 和游戏Activity。 mainActivity 包含一个按钮(播放),它根据设备语言引导至 GameActivity。例如,如果语言是英语,它将启动 Game Activity,如果语言是法语,它将启动 GameFr Activity ,如果语言是阿拉伯语,它将启动 GameAr Activity.

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);
            }
        }
    }
});

但是,我想在 MainActivity 中添加 3 个 ImageView(标志),用户可以通过它们更改应用程序的语言,为此我添加了以下内容:

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);
    }
});

然而,当用户将语言设置为英语的设备单击法国国旗时,它将成功获得法语 activity。但是,如果他返回到上一页并单击按钮(播放),则显示的页面是对应于英语 activity 但具有法语资源(字符串值和 Drawables)的页面。

这是因为以下函数:

if (Locale.getDefault().getLanguage().equals("ar"))

始终测试设备的语言,而不是用户在应用中选择的语言。

有没有函数可以给我 SetLocale 函数选择的语言?或者我应该在活动之间使用变量转移?

我该如何解决这个问题,你有更好的建议吗?

使用这个

 Locale.setDefault("Your Locale");