0

我有SplashActivity并且MainActivity默认设备语言是英语。在SplashActivity我将应用程序的默认语言更改为 vi(越南语)。我正在使用 2 种方式从 SplashActivity 移动到 MainActivity 我在下面的代码中显示。
我已经非常仔细地测试了很多次,但我仍然不知道这个问题
任何帮助将不胜感激

public class SplashActivity extends Activity {
    ...
    protected void onCreate(Bundle savedInstanceState) {
        ...
        changeDefaultLanguageConfigLanguage("vi");
        moveToMain();
        ...
    }
    private void changeDefaultLanguageConfigLanguage(String language) {
        Configuration config = new Configuration();
        Locale locale = new Locale(language);
        Locale.setDefault(locale);
        config.locale = locale;

        getBaseContext().getResources().updateConfiguration(config, getBaseContext().getResources().getDisplayMetrics());
    }

    public void moveToMain() {

        /*
           Way 1: The language in MainActivity change
        */  
        Intent mainIntent = new Intent(SplashActivity.this, MainActivity.class);
        context.startActivity(mainIntent);

        /*
           Way 2: The language in MainActivity don't change
        */ 

        new Handler().postDelayed(new Runnable() {@
            Override
            public void run() {


                Intent mainIntent = new Intent(SplashActivity.this, MainActivity.class);
                startActivity(mainIntent);

                //finish();

                //overridePendingTransition(R.anim.fade_in, R.anim.fade_out);
            }
        }, 3000);
    }
}

AndroidManifest.xml

         <activity
            android:name=".SplashActivity"
            android:label="@string/title_activity_splash"
            android:configChanges="orientation|keyboardHidden" >
            <intent-filter>
                <action android:name="android.intent.action.MAIN" />

                <category android:name="android.intent.category.LAUNCHER" />
            </intent-filter>
        </activity>
        <activity
            android:name=".MainActivity"
            android:configChanges="orientation|keyboardHidden|screenSize"
            android:label="@string/title_activity_main" >
        </activity>
4

1 回答 1

1

如果我没记错的话,您必须重新创建活动才能使配置更改生效。您可以Activity.recreate()为此使用(在 API 11 中引入)。

我还没有尝试过,但为了避免重新创建活动,我会尝试将其包含locale在活动的configChanges属性中。

于 2015-10-22T08:30:18.517 回答