android语言切换时view怎么刷新,在应用程序内部更改语言(区域设置)后如何刷新活动...

更改语言后,新创建的活动将以更改后的新语言显示,但是当前活动和处于暂停状态的先前创建的活动不会更新。如何更新活动?

API 11之前的版本(蜂窝)是使现有活动以新语言显示的最简单方法是重新启动它。这样,您就不必费心自己重新加载每个资源。

private void restartActivity() {

Intent intent = getIntent();

finish();

startActivity(intent);

}

如果更改了语言首选项OnSharedPreferenceChangeListener,请在其中onShredPreferenceChanged()调用,注册一个restartActivity()。在我的示例中,只有PreferenceActivity重新启动,但是您应该能够通过设置一个标志来重新启动活动恢复上的其他活动。

更新(感谢@stackunderflow):从API 11(Honeycomb)开始,您应该使用recreate()而不是restartActivity()。

public class PreferenceActivity extends android.preference.PreferenceActivity implements

OnSharedPreferenceChangeListener {

// ...

@Override

public void onSharedPreferenceChanged(SharedPreferences sharedPreferences, String key) {

if (key.equals("pref_language")) {

((Application) getApplication()).setLocale();

restartActivity();

}

}

@Override

protected void onCreate(Bundle savedInstanceState) {

super.onCreate(savedInstanceState);

addPreferencesFromResource(R.xml.preferences);

getPreferenceScreen().getSharedPreferences().registerOnSharedPreferenceChangeListener(this);

}

@Override

protected void onStop() {

super.onStop();

getPreferenceScreen().getSharedPreferences().unregisterOnSharedPreferenceChangeListener(this);

}

}

我有一个关于此主题的博客文章,其中有更多详细信息,但是它是中文的。完整的源代码在github上:PreferenceActivity.java

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值