点击网络榜单跳转到另一个不同的activity 而仍然在同一个tab中, ‘这个问题查了好久还没解决。。

解决方案 »

  1.   


    mHost = getTabHost();
    Intent localIntent1 = new Intent(this, MyTab.class);mHost.addTab(mHost
        .newTabSpec("home_tab")
         .setIndicator(getText(R.string.main_home),
              getResources().getDrawable(R.drawable.icon_1_n))
        .setContent(localIntent1));
      

  2.   

    跳转页面时,TAB的ID没有变就OK 
      

  3.   


    每次单击都 add 一个 TAB ??貌似不可以吧?
      

  4.   

    这个要我怎么说呢。
    个人的方法呀。
    就是为每一个Tab制定一个ID:
    if(id = 1){
      执行第一个tab
    }else if(id = 2){ 
      执行第二个TAB
    } else if (x = 3){
      执行第三个ta...
      这里就是你要执行的activity,可以再传ID=3到这个页面,让他仍然执行第三个tab,这样选择的就是第三个TAB
    }说起来感觉真不怎么好说。
      

  5.   

    我不是要切换TAb  是同一个TAB 中的按钮单击后 跳转到另一个activity啊而tab还不变
      

  6.   

    使用ViewFlipper控件,此控件可添加多个layout,并控制跳转,百度谷歌查一下吧
      

  7.   

    ViewFlipper vfFling = (ViewFlipper)this.findViewById(R.id.details);
    View  contentlist_v = View.inflate(this,R.layout.auto_cert, null);
    vfFling.addView(contentlist_v, 0);
    这样就在ViewFlipper里添加了第一个界面,多个依此类推vfFling.showNext(); 显示下一个界面
    vfFling.showPrevious(); 显示上一个界面
      

  8.   


    哥们 不行啊,项目中已经决定用tabhost了我再想想, 谢谢你提供的的解决方案
      

  9.   

    哎,我没说让你去掉tabHost啊,每个tabHost对应一个activity吧,在每个activity的界面中都使用ViewFlipper这个控件,将每个tabHost的界面中的所有子页面都放在ViewFlipper中,用ViewFlipper来控制切换界面,懂了?
      

  10.   

    <?xml version="1.0" encoding="utf-8"?>
    <!-- 自助取证主界面 -->
    <LinearLayout
      xmlns:android="http://schemas.android.com/apk/res/android"
      android:layout_width="fill_parent"
      android:layout_height="fill_parent">
      <ViewFlipper android:id="@+id/details"
            android:layout_width="fill_parent"
            android:layout_height="fill_parent">

        </ViewFlipper>     
    </LinearLayout>
    这是每个tabHost对应的界面布局,里面只有一个ViewFlipper控件,使用这个控件添加你所想要显示的多个界面布局并控制跳转,你谷歌下,很多例子
      

  11.   

    我现在只想知道俩activity 如何跳转?莫非是没办法实现么??纠结ing网上还没查到解决方案
      

  12.   

    API Demo中有例子的。 我以前看到过。
      

  13.   

    哎, 还是得跑到国外的网站上搜啊 Use Android ActivityGroup within TabHost to show different Activityhttp://united-coders.com/nico-heid/use-android-activitygroup-within-tabhost-to-show-different-activity
    Android ViewFlipper within TabHost for Tabs with different Views ... and better memory footprint
    http://united-coders.com/nico-heid/android-viewflipper-within-tabhost-for-tabs-with-different-views-and-better-memory
      

  14.   

    貌似 用ViewFlipper  性能更好感谢liurui1129, 谢谢各位帖子先放着,  我回家先捣鼓一下代码, 明早结贴
      

  15.   

    ViewFlipper完全可以实现你说的功能呀,没必要非得都是activity
      

  16.   

    其实,不要被表面现象迷惑了,像图中的酷我的界面,底部可能是用RiadioGroup写的。而在点击"网络榜单"的时候,确实是切换了tab,但因为这个底部是你自己写的,你进不进行切换就随你决定了。
      

  17.   

    简单啊  直接第二个界面也设置成和第一界面一样就OK了  一看就是LISTview   
      

  18.   

    呵呵,楼主提出的问题,在19楼的第二个链接中已经给出解决方法了,就是使用tabHost加viewFlipper实现,相当的eary,回帖每天加十分
      

  19.   

    viewFlipper不能适应Tab中的Acticity需要传递参数的情况吧?
    比如我有一个Activity,在切换之前需要传递参数,这样应该如何实现?
    而且,用viewFlipper的话,所有Layout必须定义在一个XML中?不是很方便
      

  20.   

    我也遇到这个问题,打算试试ViewFlipper
      

  21.   

    遇到同样的问题,但是问题已经解决,思路很简单        Intent intent1 = new Intent(this, HotnewproductActivity.class);
            Intent intent2 = new Intent(this, HotnewproductActivity.class);
            Intent intent3 = new Intent(this, HotnewproductActivity.class); 
            Intent intent4 = new Intent(this, HotnewproductActivity.class);
            
            intent1.putExtra("Type","hotnewproduct");
            tabHost.addTab(tabHost.newTabSpec("tab1").
            setIndicator("新品排行榜").setContent(intent1));
            
            intent2.putExtra("Type","hotproduct");
            tabHost.addTab(tabHost.newTabSpec("tab2").
            setIndicator("产品排行榜").setContent(intent2));
            
            intent3.putExtra("Type","hotbrand");
            tabHost.addTab(tabHost.newTabSpec("tab3").
            setIndicator("品牌排行榜").setContent(intent3));
            
            intent4.putExtra("Type","topcomment");
            tabHost.addTab(tabHost.newTabSpec("tab4").
            setIndicator("点评排行榜").setContent(intent4));
      

  22.   

    之前写的程序要用到TabActivity,其中一个tab下有个多级列表,其实就是像“设置‘切换页面一样,倒是如果直接启动一个activity,你会发现这个activity会变成全屏的,和之前的TabActivity半毛钱关系木有,所以,当时我感觉这个问题很麻烦呢。
    后来我进去TabActivity里面发现,TabActivity其实就是继承自ActivityGroup,然后想起来之前看到的一片文章,用ActivityGroup 来实现自定义TabActivity功能,到这里其实应该就很简单了,无非是为TabActivity增加一个subActivity,不过这里我嫌麻烦,索性不和TabActivity扯上关系,于是 就用了一个嵌套ActivityGroup 的实现方式,其实就是把一个TabActivity的子页换成一个ActivityGroup ,然后这个ActivityGroup 下面再放上几个subactivity。当然,ActivityGroup 继承自Activity,所以你也要把它当作activity去mainfest注册一下。
         我马上就要坐车回家啦,时间比较紧,格式丑陋点,大家见谅。下面是关键代码:     TabActivity的用法我就不说了,一搜一大把,关键是ActivityGroup 内activity的切换,一个继承自ActivityGroup 的class MyActivityGroup,MyActivityGroup在TabActivity里面的使用和普通activity一样,两个子activitySubAActivity.class和SubBActivity.class, 首先是MyActivityGroup 启动时要启动一个subactivity,我们启动SubAActivity.class,MyActivityGroup 的onCreate实现,
    protected void onCreate(Bundle savedInstanceState) {
                    // TODO Auto-generated method stub
                    super.onCreate(savedInstanceState);
                    setContentView(R.layout.myactivitygroup);//其实这个layout里面只有一个id为myactivitygroup _view的LinearLayout
                    container=(LinearLayout) findViewById(R.id.myactivitygroup _view);//                
                    container.removeAllViews();  
            Intent intent=new Intent(MyActivityGroup .this,SubAActivity.class); 
            intent.addFlags(Intent.FLAG_ACTIVITY_CLEAR_TOP);
            Window subActivity=getLocalActivityManager().startActivity("SubAActivity",intent);  
            View view=subActivity.getDecorView();
            container.addView(view);  //下面的代码是为了保证subactivity显示正常,必须写在这行后面,不然的话,view对象尚未产生,然后你懂的,addView应该也是用InFlate实现的
            LinearLayout.LayoutParams params=(LayoutParams) view.getLayoutParams();
            params.width=LayoutParams.FILL_PARENT;
            params.height=LayoutParams.FILL_PARENT;
            view.setLayoutParams(params);
            }
    复制代码
    下面是从SubAActivity跳转到SubBActivity,(从SubBActivity返回SubAActivity实现方法一样,只不过放的位置不一样)假设我在一个listview的OnClickListener里面实现
    list.setOnGroupClickListener(new OnGroupClickListener() {
                            
                            @Override
                            public boolean onGroupClick(ExpandableListView parent, View v,
                                            int groupPosition, long id) {
                                            LinearLayout container=(LinearLayout)((ActivityGroup)getParent()).getWindow().findViewById(R.id.myactivitygroup _view);//注意这里,还是获取group的view
                                            container.removeAllViews();  
                                    Intent intent=new Intent(SubAActivity.this, SubBActivity.class);  
                                    intent.addFlags(Intent.FLAG_ACTIVITY_CLEAR_TOP);
                                    Window subActivity=((ActivityGroup)ProvinceParkActivity.this.getParent()).getLocalActivityManager().startActivity("SubBActivity",intent);  
                                    View view=subActivity.getDecorView();
                                    container.addView(view);  
                                    LinearLayout.LayoutParams params=(LayoutParams) view.getLayoutParams();
                                    params.width=LayoutParams.FILL_PARENT;
                                    params.height=LayoutParams.FILL_PARENT;
                                    view.setLayoutParams(params);
                                            return true;
                            }
                    });
    复制代码
    仔细观察你会发现,这两段代码的实现思路是一样的,另外对于activitygroup的实现方式也大概能有些推测。
    在subactivity中不要调用finish,不然整个activity树都会挂掉,你仔细观察subactivity和tab之间的切换,会发现很有意思。刚才写了一半,帖子竟然刷新了,真是悲剧 - -#
    好啦,我现在要出发啦,祝大家新年快乐!~  补充内容 (2011-1-30 16:43):
    怎么不能编辑 - -
    我又想了下container.addView(view);  //下面的代码是为了保证subactivity显示正常,必须写在这行后面,不然的话,xxxxxxxxx
    这个说法应该是不对的,xxxxxx的部分。