本帖最后由 bzray 于 2011-10-18 15:00:53 编辑

解决方案 »

  1.   

    【补充】
    在 自定义类 HelloTabWidget extends TabActivity 实现选项卡的效果
    【在HelloTabWidget 中增加的5个Tab其中,前三个选项卡对应着同一个Activity,现在想实现在这个Activity中判断选择是的哪个Tab 】具体如何在HelloTabWidget中增加Tab我是知道的。希望知道的朋友给点提示!
      

  2.   

    TabHost 里面的 getCurrentTab 函数。
      

  3.   

    得到当前的Tab还是没办法辨别,是触发哪个Tab激活的这个Activity我现在的情况是多个Tab对应同一个Activity,然后在这个Activity中区分是哪个Tab触发的,然后再做不同的操作。
      

  4.   


    在继承Activity中可以使用getCurrentTab吗?如何获取?
    不同的Tab对应的MyActivity是只继承Activity啊? 
      

  5.   

    这样可以吗?在setOnTabChangeListener里给不同的tab发送不同的广播,然后在activity里接收然后判断这个广播是来自哪个tab的
      

  6.   

    楼上2位,广播我不懂
    使用全局静态变量,测试了下 不解:
    具体代码如下: tabHost.setOnTabChangedListener(new OnTabChangeListener() {
    @Override
    public void onTabChanged(String tabId) {
    Log.d("Hello", tabId);
    if(tabId.equals("B")){
    Util.TabName = "B";
    }else if(tabId.equals("C")){
    Util.TabName = "C";
    }else{
    Util.TabName = "A";
    }
    } });
    执行结果是:
    在A对应中取到Util.TabName==A
    在B对应中取到Util.TabName==A
    在C对应中取到Util.TabName==B
                                   
    不知为什么我还是感觉应该使用getCurrentTab 判断是否是当前Tab
    但是在仅仅继承Activity中 可以判断吗?   有回调方法吗?
      

  7.   

    搞了半天
    还是只能使用Intent传递参数,
    其它无论使用静态变量  还是 SharedPreferences 都不可以
    我猜测 执行Activity在Tab的监听事件之前,还请知道的朋友说下
      

  8.   

    曾经我也遇见过你这么一个问题,想着从这个tab直接跳过另外一个tab,并且带参数的,其实跳转是可以。可以或者parent.gettabHost().setcurrentTab(index)的方法设置,但是参数不知道怎么弄,结果我还是果断地使用了多个layout,也就是同一个activity指向了另外一个页面,注意一点的是,在页面变换的时候注意一下之前的view会为null
      

  9.   

    问题终于解决了,最终还是通过Intent传递参数从TabActivity到Activity中,这里需要注意的地方是传递参数的intent变量千万别用同一个,貌似他是以传址的方式传递而不是传值错误方式
    Intent intent = new Intent(this,A.class);
    TabHost mTabHost = getTabHost();
    intent .putExtra(KEY,1);
    mTabHost.addTab(mTabHost .newTabSpec(tag1).setIndicator(getString(tag1),
    getResources().getDrawable(resIcon)).setContent(intent);)//增加Tab1intent .putExtra(KEY,2);
    mTabHost.addTab(mTabHost .newTabSpec(tag2).setIndicator(getString(tag2),
    getResources().getDrawable(resIcon)).setContent(intent);)//增加Tab2
    intent .putExtra(KEY,3);
    mTabHost.addTab(mTabHost .newTabSpec(tag3).setIndicator(getString(tag3),
    getResources().getDrawable(resIcon)).setContent(intent);)//增加Tab3这样的话到各自的activity中会发现取到key的值是错误的。正确方式:【分别构建三个intent】
    Intent intent1 = new Intent(this, A.class);
    Intent intent2 = new Intent(this, A.class);
    Intent intent3 = new Intent(this, A.class);
    TabHost mTabHost = getTabHost();
    intent1.putExtra(KEY,1);
    mTabHost.addTab(mTabHost .newTabSpec(tag1).setIndicator(getString(tag1),
    getResources().getDrawable(resIcon)).setContent(intent1);)//增加Tab1intent2.putExtra(KEY,2);
    mTabHost.addTab(mTabHost .newTabSpec(tag2).setIndicator(getString(tag2),
    getResources().getDrawable(resIcon)).setContent(intent2);)//增加Tab2
    intent3.putExtra(KEY,3);
    mTabHost.addTab(mTabHost .newTabSpec(tag3).setIndicator(getString(tag3),
    getResources().getDrawable(resIcon)).setContent(intent3);)//增加Tab3