本文纠正 http://blog.csdn.net/sodino/article/details/6596709
那哥们,有错误
他应该没加 <uses-permission android:name="android.permission.CHANGE_CONFIGURATION"/>这个权限
效果图
public class MainActivity extends Activity implements OnClickListener{
@Override
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.activity_main);
PreferenceUtil.init(this);
findViewById(R.id.btn_zw).setOnClickListener(this);
findViewById(R.id.btn_yw).setOnClickListener(this);
findViewById(R.id.btn_rw).setOnClickListener(this);
findViewById(R.id.btn_hw).setOnClickListener(this);
}
@Override
public void onClick(View v) {
switch (v.getId()) {
case R.id.btn_zw:
switchLanguage("zh");
restartActivity();
break;
case R.id.btn_yw:
switchLanguage("en");
restartActivity();
break;
case R.id.btn_rw:
switchLanguage("jp");
restartActivity();
break;
case R.id.btn_hw:
switchLanguage("kr");
restartActivity();
break;
default:
break;
}
}
private void restartActivity() {
finish();
Intent intent=new Intent(MainActivity.this,MainActivity.class);
startActivity(intent);
}
private void switchLanguage(String language) {
//设置应用语言类型
Resources resources = getResources();
Configuration config = resources.getConfiguration();
DisplayMetrics dm = resources.getDisplayMetrics();
if (language.equals("en")) {
config.locale = Locale.ENGLISH;
} else if(language.equals("zh")) {
config.locale = Locale.SIMPLIFIED_CHINESE;
}else if(language.equals("jp")){
config.locale = Locale.JAPAN;
//config.locale = Locale.JAPANESE;
}else if(language.equals("kr")){
config.locale = Locale.KOREA;
//config.locale = Locale.KOREAN;
}
resources.updateConfiguration(config, dm);
//保存设置语言的类型
PreferenceUtil.commitString("language", language);
}
}
PreferenceUtil 是个工具类,保存后下次进去就是之前的代码。