TabHost使用必不可少的要用到 TabActivity,虽然本人自始至终不喜欢这个类,但是接触到好多项目都在使用此类,表示相当无语。想对项目进行小小修改是遇到了好几个坑爹的问题。
加入MainActivity 中用TabHost内嵌了两个Activity,HomeActivity,MineActivity.其中MineActivity的逻辑如下:
1:如果已登录则显示个人数据,如果没有登录则点击进入登录页(LoginActivity). 然后回退刷新
2:点击设置进入SettingActivity,此Activity可以进行账号注销。
回退刷新用到了StartActivityForResult() ,遇到了一个非常不稳定的坑。代码如下
如果没有点击过注销返回,MainActivity的onActivityResult()是可以正常执行的,只要点击了注销,onActiivty的执行时机就乱了。注销后再点击进入登录页面,还没点击登录处理,onActivityResult()就立马执行了,完全找不到原因。
代码如下:
MineActivity中
Intent intent = new Intent(context, LoginActivity.class); getParent().startActivityForResult(intent, RequestCode.USER_INFO_REFRESH);
Intent intent = new Intent(context, SettingActivity.class); getParent().startActivityForResult(intent, Constant.MY_SETTING);
LoginActivity中登录成功后回退
setResult(RESULT_OK); finish();
MainActivity当中,本以为会执行:
@Override protected void onActivityResult(final int requestCode, final int resultCode, final Intent data) { super.onActivityResult(requestCode, resultCode, data); LogUtil.outLog(requestCode); switch (requestCode){ case RequestCode.USER_INFO_REFRESH: if(resultCode == RESULT_OK){ ((OnTabActivityResultListener)myActivity).onTabResume(); } break; default: break; } }
结果执行的真实情况相当气人。
几乎每次点击进入LoginActivity,MainActivity
onActivityResult()立马就会执行,根本没有像预料的那样登录成功后回来执行此方法然后刷新。
但是偶尔是可以登录玩回退进行正常刷新。结果相当费解。
例如:常规那些可能性原因都是试过了,比如launchMode设置、请求码设置必须大于0,统统不起作用。
那位朋友知道,请给予留言帮助谢谢。