TabHost使用未解之疑惑

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,统统不起作用。

那位朋友知道,请给予留言帮助谢谢。



  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值