当前位置:   article > 正文

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

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

声明:本文内容由网友自发贡献,不代表【wpsshop博客】立场,版权归原作者所有,本站不承担相应法律责任。如您发现有侵权的内容,请联系我们。转载请注明出处:https://www.wpsshop.cn/w/Cpp五条/article/detail/196639
推荐阅读