TabHost使用未解之疑惑

android 专栏收录该内容
12 篇文章 0 订阅

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
    收藏
  • 打赏
    打赏
  • 扫一扫,分享海报

©️2022 CSDN 皮肤主题:编程工作室 设计师:CSDN官方博客 返回首页

打赏作者

xingCome

你的鼓励将是我创作的最大动力

¥2 ¥4 ¥6 ¥10 ¥20
输入1-500的整数
余额支付 (余额:-- )
扫码支付
扫码支付:¥2
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值