Android系统切换语言的时候APP无法更新资源文件的解决方法
2015-02-15 14:03
881 查看
你的APP支持多语言环境,假如它正在后台运行,此时用户去更换系统语言,等系统语言换好后直接从后台打开它,此时用户会发现你的界面语言没有和系统语言保持一致;为什么?主要是界面资源没有重新加载
如果你是属于自己在APP内设置语言切换,那么就可以直接在你设置切换的那个activity里做处理,重新启动一次该activity就可以了,但是如果你的APP和我类似本身是没有切换语言功能的,只是跟随系统的,那么你不可能在所有的activity里处理吧!所以我这里就直接在application中重新启动一次app就可以解决更新资源问题了
我们都知道在Application是Android的第一入口,那么一旦系统切换语言,就会触发它的onConfigurationChanged()方法,那么重新启动我们就直接在这个方法中处理,此处的finishActivity();方法是关闭掉所有的activity,那么在BaseActivity里就需要执行MyApp.getInstance().addActivity(this);
如果你是属于自己在APP内设置语言切换,那么就可以直接在你设置切换的那个activity里做处理,重新启动一次该activity就可以了,但是如果你的APP和我类似本身是没有切换语言功能的,只是跟随系统的,那么你不可能在所有的activity里处理吧!所以我这里就直接在application中重新启动一次app就可以解决更新资源问题了
我们都知道在Application是Android的第一入口,那么一旦系统切换语言,就会触发它的onConfigurationChanged()方法,那么重新启动我们就直接在这个方法中处理,此处的finishActivity();方法是关闭掉所有的activity,那么在BaseActivity里就需要执行MyApp.getInstance().addActivity(this);
public class MyApp extends Application{ private static MyApp instance = null; private List<Activity> activities =new ArrayList<Activity>(); public void addActivity(Activity activity){ activities.add(activity); } public void finishActivity() { for (Activity activity : activities) { activity.finish(); } } public static MyApp getInstance() { if (instance == null) { instance = new MyApp(); } return instance; } @Override public void onCreate() { // TODO Auto-generated method stub super.onCreate(); instance = this; } @Override public void onConfigurationChanged(Configuration newConfig) { // TODO Auto-generated method stub super.onConfigurationChanged(newConfig); //配置改变触发此方法 finishActivity();//语言切换退出 //最开始我是直接用的下面的方法,测试的时候发现如果app启动了多个activity的时候这个执行这个方法会导致app多重启几次,最后用批量关闭activity解决了 //System.exit(0); //android.os.Process.killProcess(android.os.Process.myPid()); } }
相关文章推荐
- 〖Android〗Android App项目资源字符串检查(检查是否缺少对应的翻译,导致系统切换语言后崩溃)
- 命令行下使用javah命令生成.h文件,出现“错误: 无法访问android.app.Activity 找不到android.app.Activity的类文件”的解决方法
- Mac下安装与配置Go语言开发环境 无法写入系统文件的解决方法
- 命令行下使用javah命令生成.h文件,出现“错误: 无法访问android.app.Activity 找不到android.app.Activity的类文件”的解决方法
- 命令行下使用javah命令生成.h文件,出现“错误: 无法访问android.app.Activity 找不到android.app.Activity的类文件”的解决方法
- 命令行下使用javah命令生成.h文件,出现“错误: 无法访问android.app.Activity 找不到android.app.Activity的类文件”的解决方法
- UNITY4.3.0f4 无法读取Android设备系统语言解决方法
- Android系统切换语言更新应用界面方法
- Android开发中R.java文件丢失或无法更新的解决方法
- 开发Android的时候遇到的问题及解决方法(不断更新)
- win7无法访问局域网2003系统共享的文件 解决方法
- Winform 升级解决方法之EXE资源文件解压更新
- 资源文件使用&多语言切换方法
- 修改fstab文件后报错无法进入系统的解决方法
- fatal error C1083: 无法打开包括文件:“atlapp.h”解决方法
- 64位系统 IIS7.5 下:HTTP 错误 404.17 - Not Found 请求的内容似乎是脚本,因而将无法由静态文件处理程序来处理 解决方法
- 解决java工程打包后无法找到资源文件路径的方法
- Winform项目中无法引用资源文件中图片的解决方法
- 小红伞(antivir)无法更新 校验和与控制文件中的说明不匹配 解决方法
- Windows各种系统文件无法打开故障解决方法