是否可以在仍使用Android资源的情况下以编程方式更改应用程序的语言?
如果不是,是否可以请求特定语言的资源?
我想让用户从应用程序中更改应用程序的语言。
#1楼
在设置内容之前,应在每个activity设置Locale configuration this.setContentView(R.layout.main);
#2楼
我的应用程序启动后就更改了德语。
这是我的正确代码。 任何人都想为我使用这个。.(如何在Android中以编程方式更改语言)
我的代码:
Configuration config ; // variable declaration in globally
// this part is given inside onCreate Method starting and before setContentView()
public void onCreate(Bundle icic)
{
super.onCreate(icic);
config = new Configuration(getResources().getConfiguration());
config.locale = Locale.GERMAN ;
getResources().updateConfiguration(config,getResources().getDisplayMetrics());
setContentView(R.layout.newdesign);
}
#3楼
唯一对我完全有效的解决方案是Alex Volovoy的代码与应用程序重新启动机制的组合:
void restartApplication() {
Intent i = new Intent(MainTabActivity.context, MagicAppRestart.class);
i.setFlags(Intent.FLAG_ACTIVITY_CLEAR_TOP);
i.addFlags(Intent.FLAG_ACTIVITY_NEW_TASK);
MainTabActivity.context.startActivity(i);
}
/** This activity shows nothing; instead, it restarts the android process */
public class MagicAppRestart extends Activity {
@Override
protected void onActivityResult(int requestCode, int resultCode, Intent data) {
super.onActivityResult(requestCode, resultCode, data);
finish();
}
protected void onResume() {
super.onResume();
startActivityForResult(new Intent(this, MainTabActivity.class), 0);
}
}
#4楼
只是增加了一块让我绊倒的东西。
例如,其他答案可以使用“ de”正常工作
String lang = "de";
Locale locale = new Locale(lang);
Locale.setDefault(locale);
Configuration config = new Configuration();
config.locale = locale;
getBaseContext().getResources().updateConfiguration(config,
getBaseContext().getResources().getDisplayMetrics());
上面的示例values-fr-rBE用于"fr_BE"区域设置,因此它将使用values-fr-rBE文件夹或类似名称。
需要以下细微更改才能与"fr_BE"
String lang = "fr";
//create a string for country
String country = "BE";
//use constructor with country
Locale locale = new Locale(lang, country);
Locale.setDefault(locale);
Configuration config = new Configuration();
config.locale = locale;
getBaseContext().getResources().updateConfiguration(config,
getBaseContext().getResources().getDisplayMetrics());
#5楼
只需处理方法
@Override public void onConfigurationChanged(android.content.res.Configuration newConfig).
跟随链接
我认为这很有用