1.直接闪退,报类型转换错误,检查很多遍,无果,最后发现,是因为采用了多个布局适配,也就是layout-sw600dp和layout文件夹下有一个相同命名的布局文件,后来因为需求变化,更改了其中一个布局文件的控件类型,另一个忘了改,编译没有报错,运行时报错
2.startActivity启动一个新Activity后onActivityResult不被调用,但是有时候又会被调用,找了很久,发现是因为使用了TabHostActivity,TabHostActivity子activity,有时候就不会调用一些生命周期,后来子activity中使用
getParent().startActivityForResult(new Intent(this,要跳转的Activity.class), 请求码)
然后TabHostActivity中的onActivityResult去调用当前子activity的onActivityResult方法,就可以实现了,
Activity currentActivity = getCurrentActivity();
if (currentActivity instanceof TestActivity) {
((TestActivity) currentActivity).onActivityResultL(requestCode,
resultCode, data);
}
最后补充一点,还是不要使用TabHostActivity了,这个方法已经被google标注为过时了,会有各种小问题的,我遇到的应该就是其中的某一个问题。推荐使用FragmentActivity去加载多个fragment
3.TabActivity弹出窗口后返回,子activity中的EditText只能输入,不能删除(退格)了,找了很久,在TabActivity中的dispatchKeyEvent方法中打印捕捉到的key的值,发现是可以的,但是子activity就捕捉不到,说明tabActivity抢占了子activity的焦点,怎么办呢,还是2的办法,调用一下子类的同样的方法,
</