安卓tabhost和子Activity通信方法

本文详细介绍了在Android开发中,如何实现TabHost与Activity之间的消息传递。包括Activity如何通知TabHost,以及TabHost如何通知Activity的方法,并提供了具体的代码实现。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

发现很多同学在问这个问题

1个tabhost对应的类假设是T,假设包含2个子tab,每个是1个activity,假设叫a,b,对应的类假设是A和B

那么有这几个问题

1.a如何调用b的方法,或者说发送消息给b

2.a如何通知tabhost

3.tabhost如何通知a和b

其实2,3解决了,1也就解决了

下面来说其中一种办法(有的人给出了广播的办法,根据实际情况选择吧,这里不多阐述)


a如何通知tabhost,通过message

核心代码是在t中写个handler接收消息

[java]  view plain  copy
  1. public Handler searchHandler = new Handler() {  
  2.         public void handleMessage(Message msg) {  
  3.             Bundle bundle = msg.getData();  
  4.             // 获得信息  
  5.             String searchString = bundle.getString("search");  
  6.             //XXXX逻辑    
  7. }  
  8. }  

然后在a中写发送消息的代码

[java]  view plain  copy
  1. T t= (T) getParent();                  
  2. Message message = new Message();  
  3. //写逻辑  
  4. t.searchHandler .sendMessage(message);  
 

tabhost如何通知a,

如果a是活动activity(这种情况很多见,比如其他tab在多线程执行东西,但是内容需要当前tab实时展现)

那么Activity currentActivity = getCurrentActivity();
if (currentActivity instanceof A) {
           ((A) currentActivity).你的方法XXX;
       }
如果a不是活动activity,那么在a的

@Override
protected void onResume() 

中天添加逻辑即可

//再看一种写法

if(m.getCurrentTab()==0) {
    IndexActivity indexActivity = (IndexActivity) m.getCurrentView().getContext();
    indexActivity.CallBack("未连接");
}
m为tabhost,这种写法告诉我们,我们可以提前判断当前的是哪个CurrentTab,从而可以判断当前的activity。

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值