[Android]应用语言切换 国际化

来源:互联网 发布:网络配线架实物连接图 编辑:程序博客网 时间:2024/05/21 09:32

本文纠正  http://blog.csdn.net/sodino/article/details/6596709

那哥们,有错误

他应该没加  <uses-permission android:name="android.permission.CHANGE_CONFIGURATION"/>这个权限

效果图



public class MainActivity extends Activity implements OnClickListener{@Overrideprotected 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);}@Overridepublic 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 是个工具类,保存后下次进去就是之前的代码。



0 0