语言更改后自动刷新布局中的所有视图

时间:2014-04-08 09:02:40

标签: android

在我的应用程序中,我有一个微调器来选择语言“en”或“ar”。我对这两种语言都有String.xml
一旦我们从微调器中选择语言,我希望我的布局能够改变选择的语言。

我试过这个,但是当我从微调器中选择时不会改变:

 Spinner languageSpinner=(Spinner) findViewById(R.id.languagespinner);
            languageSpinner.setOnItemSelectedListener(new OnItemSelectedListener() {

            @Override
            public void onItemSelected(AdapterView<?> arg0, View arg1,
                    int arg2, long arg3) {

                if(arg2==0)
                    languageToLoad  = "en"; // your language
                else
                    languageToLoad  = "ar";
                Locale locale = new Locale(languageToLoad);  
                Locale.setDefault(locale); 
                Configuration config = new Configuration(); 
                config.locale = locale; 
                getBaseContext().getResources().updateConfiguration(config,  
                getBaseContext().getResources().getDisplayMetrics());
                onConfigurationChanged(config);
            }

            @Override
            public void onNothingSelected(AdapterView<?> arg0) {
                // TODO Auto-generated method stub

            }
        });

我该怎么做?

3 个答案:

答案 0 :(得分:1)

设置区域设置后,您需要重新加载当前活动

finish();
startActivity(getIntent());

将重新加载您的活动。

答案 1 :(得分:0)

在您的活动中

调用此函数重新启动您的活动

private void restartActivity() {
    Intent intent = getIntent();
    finish();
    startActivity(intent);
}

答案 2 :(得分:0)

从API级别&gt; 11开始,您可以使用

recreate()

重新创建(新实例)您的活动。 看看documentation.