Android App 应用内多语言切换 - Go语言中文社区

Android App 应用内多语言切换


App用户根据自己的语言喜好,设置app语言。语言设置只针对本app,并在下次启动应用时保留前一次启动设置。

切换语言代码:

 

sharePreferences存入设置语言:

SharencessharedPreferences=getActivity().getSharedPrefeivity().getPackageName(),0);sharedPreferences.edit().putString("language",lanAtr).commit();

语言更新后,对于之前出现且目前仍旧存活的activity,语言设置是不生效的。可以通过重启对应的activity,让语言及时生效

private void restart() { Intent it = new Intent(getActivity(), MainActivity.class); //MainActivity是你想要重启的activity it.addFlags(Intent.FLAG_ACTIVITY_CLEAR_TOP); it.addFlags(Intent.FLAG_ACTIVITY_NEW_TASK); getActivity().startActivity(it); }

NOTE:

一般,从用户体验角度讲,语言设置功能入口会放在App的前几层,如果入口太深,导致用户无法快速找到语言设置入口,并且如果要讲应用重启的话,用户行为操作记录会比较麻烦。

重启对应Activity有几种方式:

如果用户进入语言设置需要太多的层级,或者在操作语言设置之前操作的其他行为,APP想保存的,那可以通过广播的方式(sendBroadcast()),语言改变时发送广播,所有activity接受到广播后(BroadcastReceiver),都进行重启操作;

如果允许用户设置语言后,app回到主目录,这样就简单很多,直接调用上面的restart()方法即可。

重启singleTask activity:

如果你的启动activity是singleTask,向上面那样重启,语言还是不生效的。这种情况如何呢?可以通过了解、利用其生命周期来解决,在切回singleTask属性的activity时,activity会调用onNewIntent()方法。 重写该方法就可以。以下是一种解决方法,先finish自己,然后重启自己。

@Override

protected void onNewIntent(Intentintent){

if(intent.getAction()==null){

finish();

Intenti=newIntent(this,MainActivity.class);

startActivity(i);// overridePendingTransition(0, 0);

}else{

//其他逻辑

}}

结束语:

APP语言设置不复杂,主要是如何将语言设置及时生效,涉及activity重启,广播等。

版权声明:本文来源简书,感谢博主原创文章,遵循 CC 4.0 by-sa 版权协议,转载请附上原文出处链接和本声明。
原文链接:https://www.jianshu.com/p/b2a74364c4c6
站方申明:本站部分内容来自社区用户分享,若涉及侵权,请联系站方删除。

0 条评论

请先 登录 后评论

官方社群

GO教程

猜你喜欢