[英]Android - Change Locale (Language)
我正在嘗試添加語言控制器,這意味着更改應用程序的語言。
我添加了4個標記(ImageView),每當我按下所需的標記時,我都希望應用程序更改該標記所依賴的語言。
這些應用程序最初是英語,當我按丹麥語falg時,語言會切換為丹麥語,但是每當我想改回英語時,都不會發生任何事情。
我已經在自己的value文件夾中制作了幾個strings.xml文件
value-en/strings.xml
value-dk/strings.xml
方法更改語言:
english.setOnClickListener(new View.OnClickListener() {
@Override
public void onClick(View v) {
Locale locale = new Locale("en");
Locale.setDefault(locale);
Configuration config = new Configuration();
config.locale = locale;
getResources().updateConfiguration(config,getResources().getDisplayMetrics());
setContentView(R.layout.activity_main);
}
});
english
是我的ImageView變量
我找到了解決方案。
為了將onClickListener()
保存在其他組件上,我需要刷新活動,如下所示:
重新開始活動
我只是簡單地采用了以下方法:
//Restarts the activity after changing the languagse
private void RestartActivity(){
Intent intent = getIntent();
finish();
startActivity(intent);
}
每當我更改語言時,我都會運行該方法:
english.setOnClickListener(new View.OnClickListener() {
@Override
public void onClick(View v) {
Locale locale = new Locale("en");
Locale.setDefault(locale);
Configuration config = new Configuration();
config.locale = locale;
getResources().updateConfiguration(config,getResources().getDisplayMetrics());
setContentView(R.layout.activity_main);
RestartActivity(); //Run the method as the last thing
}
});
由於某些原因,聽眾看不到mto停留,但是此解決方案對我有用。
我測試了下面的代碼,並且按我的考慮工作。 選中此選項將對您有所幫助。 在您的點擊監聽器上調用此方法,並將區域設置字符串作為參數傳遞。
私人無效setDeviceDefaultLanguage(String languageToLoad){
Locale locale = new Locale(languageToLoad);
Locale.setDefault(locale);
Configuration config = new Configuration();
config.locale = locale;
getResources().updateConfiguration(config,
getResources().getDisplayMetrics());
Intent i = getBaseContext().getPackageManager()
.getLaunchIntentForPackage(getBaseContext().getPackageName());
i.addFlags(Intent.FLAG_ACTIVITY_CLEAR_TOP);
startActivity(i);
}
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.