android 应用语言,在Android中以编程方式更改应用语言

这篇博客讨论了如何在Android应用运行时通过编程方式改变应用的语言。作者提供了几种不同的实现方法,包括直接设置Locale,更新Configuration,以及通过重新启动应用来应用语言更改。代码示例展示了如何在onCreate()方法中设置Locale并更新资源配置,以及如何处理配置变更。此外,还提到了针对特定区域设置(如“fr_BE”)时需要注意的细节。
摘要由CSDN通过智能技术生成

是否可以在仍使用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).

跟随链接

我认为这很有用

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值