您的位置:首页 > 其它

TabHost使用未解之疑惑

2016-07-18 11:38 330 查看
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,统统不起作用。


那位朋友知道,请给予留言帮助谢谢。
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签: