TabHost中一个TAB的两个不同的activity跳转

-droidcoffee- 2011-07-06 03:42:33
如何实现?


就像图中的效果

...全文
3787 36 打赏 收藏 转发到动态 举报
写回复
用AI写文章
36 条回复
切换为时间正序
请发表友善的回复…
发表回复
百世修行 2014-02-20
  • 打赏
  • 举报
回复
之前写的程序要用到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的部分。
huxiaoguang120 2013-09-18
  • 打赏
  • 举报
回复
遇到同样的问题,但是问题已经解决,思路很简单 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));
Anlibraly 2013-06-14
  • 打赏
  • 举报
回复
ActivityGroup解决
zzy大头鬼 2012-08-02
  • 打赏
  • 举报
回复
我也遇到这个问题,打算试试ViewFlipper
cai283053199 2012-03-07
  • 打赏
  • 举报
回复
我最近也遇到了这样的问题,看了你们的帖子,受益匪浅~
zhuan_jiaobei 2012-02-15
  • 打赏
  • 举报
回复
求同解
hotlinhao 2012-02-14
  • 打赏
  • 举报
回复
我需要这个结果!!!
-droidcoffee- 2011-11-30
  • 打赏
  • 举报
回复
[Quote=引用 28 楼 andy_123 的回复:]

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

哥们有更好的解决办法么??
我目前项目中就采用的这个。 感觉还可以吧。
andy_123 2011-11-30
  • 打赏
  • 举报
回复
viewFlipper不能适应Tab中的Acticity需要传递参数的情况吧?
比如我有一个Activity,在切换之前需要传递参数,这样应该如何实现?
而且,用viewFlipper的话,所有Layout必须定义在一个XML中?不是很方便
baiqie 2011-11-20
  • 打赏
  • 举报
回复
呵呵,楼主提出的问题,在19楼的第二个链接中已经给出解决方法了,就是使用tabHost加viewFlipper实现,相当的eary,回帖每天加十分
lijianchuanxin 2011-10-27
  • 打赏
  • 举报
回复
试试 试试
zxciop110 2011-10-20
  • 打赏
  • 举报
回复
简单啊 直接第二个界面也设置成和第一界面一样就OK了 一看就是LISTview
mikebai 2011-07-08
  • 打赏
  • 举报
回复
顶ls
听风 2011-07-08
  • 打赏
  • 举报
回复
其实,不要被表面现象迷惑了,像图中的酷我的界面,底部可能是用RiadioGroup写的。而在点击"网络榜单"的时候,确实是切换了tab,但因为这个底部是你自己写的,你进不进行切换就随你决定了。
-droidcoffee- 2011-07-07
  • 打赏
  • 举报
回复
[Quote=引用 21 楼 liurui1129 的回复:]
ViewFlipper完全可以实现你说的功能呀,没必要非得都是activity
[/Quote]

恩恩 正在用呢, 感觉效果不错哈。。 哈哈

谢了
liurui1129 2011-07-07
  • 打赏
  • 举报
回复
ViewFlipper完全可以实现你说的功能呀,没必要非得都是activity
-droidcoffee- 2011-07-06
  • 打赏
  • 举报
回复
貌似 用ViewFlipper 性能更好

感谢liurui1129, 谢谢各位

帖子先放着, 我回家先捣鼓一下代码, 明早结贴

-droidcoffee- 2011-07-06
  • 打赏
  • 举报
回复
哎, 还是得跑到国外的网站上搜啊

Use Android ActivityGroup within TabHost to show different Activity

http://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
雨松MOMO 2011-07-06
  • 打赏
  • 举报
回复
API Demo中有例子的。 我以前看到过。
-droidcoffee- 2011-07-06
  • 打赏
  • 举报
回复
我现在只想知道俩activity 如何跳转?

莫非是没办法实现么??

纠结ing

网上还没查到解决方案
加载更多回复(16)

80,355

社区成员

发帖
与我相关
我的任务
社区描述
移动平台 Android
androidandroid-studioandroidx 技术论坛(原bbs)
社区管理员
  • Android
  • yechaoa
  • 失落夏天
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告
暂无公告

试试用AI创作助手写篇文章吧