我的程序是在AppTabMain这个Activity里面创建的tabwidget的,设置了四个选显卡。 现在网络数据通过Handler传递到了AppTabMain这个activity里面,怎么把值更新到指定的选项卡(可以是选项卡2,3,4,)里面的EditText里面呢?
没必要及时更新啊,先保存在父类里,等切换到指定的类时在更新
而且你的Activity不可见时你去更新它很可能出问题的
那假如切换到一个选显卡时 一定执行的方法是什么呢?
activity.onResume
可以将数据用JAVABEAN封装起来
业务需要,Tab的tab是可变的,用户可以选择要显示出来的tab页面,而且要求,现在后马上能够在UI上体现。
1,判断用户的选择,在onResum里处理,直接加用addTab加到TabHost里。
运行之后,才发现这种做法是多么的愚蠢。每次选择,就会把现在选择状态的tab加到原来TabHost里,取消选择的却没有消失。
2.仍然在onResum做,在addTab之前用clearAllTabs(),清除以前的所有tab。
运行后,发现有时可以,有时程序会崩溃掉。诡异的是,错误并不是发生在onResume里,因为它正常结束了。
仔细分析Log后,发现是getCurrentTab时出了错,而这个方法是由系统调用的。
修改办法,可以覆盖它,只是这样会比较麻烦。
3.纠结1个小时后,想到问题的关系所在。 就是currentTab这个成员出了问题。clear后,它没有变,系统再去取的时候就出了错。
毅然决定在clear之前,用setCurentTab(0)来定位到第一个。
4.OK。
经过数小时的奋斗,问题终于解决了,继续看我的电影,O(∩_∩)O~
注:setCurentTab(0)这样做其实是有问题的,因为有可能一个tab都没有。
只是,我们的业务里,如果用户一个tab都没有选的话,会有一他提示的tab。所以没有问题。
在TabActivity中,只在第一次进入时走了onCreate()、onStart()、onResume()三个阶段,然后在退出该页面时走了onPause()、onStop()和onDestroy()两个阶段。其他时间无论其中的子Activity如何切换,都不会再进入TabActivity的生命周期。
而子Activity,再第一次创建的时候,都会走onCreate()、onStart()、onResume()三个阶段,期间在各子Activity中切换,经历了onPause()和onResume()两个阶段,然后在主TabActivity退出时经历onPause()、onStop()和onDestroy()三个阶段
详细见下图说明:
上图是一个包含三个标签的TabActivity,我们把主TabActivity命名为custom,三个子tab从左往右依次命名为Info、contact和record
当我们第一次进入该TabActivity时:
当我们从tab1切换到tab2的时候,即从info切换到contact时:
当从tab2切回tab1的时候:
由于切换tab3一样,故不再截图
当退出该TabActivity时:
以上,注意创建和销毁时的顺序
由于我并没有点击到tab3,tab3中的Activity没有create,所以退出时也没有destroy。
//获取当前Tab中对应的Activity
th.setCurrentTab(3);
MessageActivity ma=(MessageActivity)th.getCurrentView().getContext();
ma.refreshData();
//有用