TabActivity父Activity控制子Activity

转帖请注明本文出自pkxutao的博客(http://blog.csdn.net/pkxutao/article/details/19410143),请尊重他人的辛勤劳动成果,谢谢!

现在很多应用都会用到tabActivity布局,例如:新浪微博等,一般的做法都是在MainActivity中创建几个包含目标Activity的Intent,点击相应的tab会跳转到相应的Activity里面。

很多时候,都需要处理导航tabhost和子Activity的交互,有时候是子Activity控制父Activity的变量或者UI,有时候是反过来,下面介绍怎样在子Activity中控制父Activity的操作和父

Activity中控制子Activity的操作。

一、父Activity控制子Activity

1、遇到一种需求,子Activity是一个listview,需求是当前界面为listview这个界面时,再次点击导航tab,listview回到顶部。导航tab点击事件必须写在父Activity,那么就需要在

父Activity控制子Activity的UI变换,当前界面的Activity对象可以通过getCurrentActivity()得到(注意此时得到的对象是子Activity不是父Activity,虽然此时父Activity即底部导航菜单也在

界面上),然后把改对象强转为子Activity类对象,就可以调用子Activity方法了。代码如下:

((SonActivity)(getLocalActivityManager().getCurrentActivity())).moveToTop();

2、第一种方法只适用于在父Activity控制当前子Activity变化,如果需要管理其他几个子Activity行不行呢?答案是可行的:在父Activity中创建list存放子Activity:

public List<Activity> _sonActivity = new ArrayList<Activity>();

在子Activity中把自身添加进去:

((MainActivity)(getParent()))._sonActivity.set(1, this);

使用时:

for (int i = 0; i < _sonActivity.size(); i++) {
	if (_sonActivity.get(i).getClass().getName().equals("com.your.sonActivity")) {
		FindIndexActivity find = (FindIndexActivity)(_sonActivity.get(i));
		find.refreshView();
	}
}
二、子Activity控制父Activity:

MainActivity _mainActivity = (MainActivity)getParent();
当然也可以把父Activity的handler传到子Activity来。
 

有些人喜欢把数据设成全局的,这样在写代码时确实轻松很多,但是这样也增加了危险性,任何地方都能修改全局代码,这是非常不合逻辑的,建议在可能的情况下,控制

变量的可写范围。如果你有更多好的方法,欢迎推荐。



评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值