1,本文专门用于记载一些android开发中的莫名奇妙的问题,后续会不停的添加
1)设置语言,客户要求设置语言后焦点自动跳到“下一步按钮”,语言列表(GridView) 下一步(Button),由于设置完语言会自动刷新gridview,而刷新又需要一定时间,所以会导致即使button.requestFocus后焦点仍然会被gridview抢走
解决办法:
mBtnLangNext.post(new Runnable() {
@Override
public void run() {
mBtnLangNext.requestFocus();
}
});
是不是感觉很神奇!!!
2) android资源文件 array.xml中 <item>pt</item>这样写对吗?
<array>
<item>us</item>
<item>pt</item>
</array>
比如上面,反正pt的值是怎么读出来都是 null,太神奇了
3)Configuration 这个类相信大家都还熟悉,如果光明正大的用这个类不容易发现问题,就是怕有些人总喜欢在server中偷偷摸摸的修改Configuration,还不敢加上日志,弄得出现莫名奇妙的问题。
configChanges相信大家都比较熟悉,在横竖屏切换的时候是不是经常用到,这就监听到了Configuration配置改变事件
android:configChanges="orientation"
@Override
public void onConfigurationChanged(Configuration newConfig) {
super.onConfigurationChanged(newConfig);
System.out.println("onConfigurationChanged tostring==>"+newConfig.toString());
}
//通过打印可以看出Configuration有什么改变
Configuration newConfig = getResources().getConfiguration();
System.out.println("getConfig tostring==>"+newConfig.toString());
//textLayoutDirection locale screenWidthDp screenHeightDp screenLayout orientation keyboard 这些都是Configuration的属性,如果改变这些值都会使当前activity重启
❑ orientation 屏幕在纵向和横向间旋转。
❑ keyboardHidden 键盘显示或隐藏。
❑ fontScale 用户变更了首选的字体大小。
❑ locale 用户选择了不同的语言设定。
❑ keyboard 键盘类型变更,例如手机从12键盘切换到全键盘
❑ touchscreen或navigation 键盘或导航方式变化,一般不会发生这样的事件
如果我们不希望改变某个配置时当前apk重启的话,只需在manifest节点里添加“android:configChanges”特性,
如 android:configChanges="touchscreen|locale|layoutDirection"触摸屏模式和语言配置改变时activity是不会重启的