点击网络榜单跳转到另一个不同的activity 而仍然在同一个tab中, ‘这个问题查了好久还没解决。。
解决方案 »
- android 获取局域网内其他手机的ip
- activity最前端显示
- OS1.5与1.6下,切换UI(setContentView)的表现为何不同?
- view组件设置动画的问题--怎么让一个组件同时有两种动画变换?
- 有人用livecode开发android和ios app吗
- android 客户端解析服务器数据
- 毕业设计
- Android Studio SVN 不能提交 请问怎么解决 谢谢
- android的服务器端
- 开发者账户使用与Gmail邮箱关系
- Android:TextView:同时调用setLines与setMaxLines(或者setLines与setMinLines)方法均有问题
- android SDK 重装问题
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));
每次单击都 add 一个 TAB ??貌似不可以吧?
个人的方法呀。
就是为每一个Tab制定一个ID:
if(id = 1){
执行第一个tab
}else if(id = 2){
执行第二个TAB
} else if (x = 3){
执行第三个ta...
这里就是你要执行的activity,可以再传ID=3到这个页面,让他仍然执行第三个tab,这样选择的就是第三个TAB
}说起来感觉真不怎么好说。
View contentlist_v = View.inflate(this,R.layout.auto_cert, null);
vfFling.addView(contentlist_v, 0);
这样就在ViewFlipper里添加了第一个界面,多个依此类推vfFling.showNext(); 显示下一个界面
vfFling.showPrevious(); 显示上一个界面
哥们 不行啊,项目中已经决定用tabhost了我再想想, 谢谢你提供的的解决方案
<!-- 自助取证主界面 -->
<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控件,使用这个控件添加你所想要显示的多个界面布局并控制跳转,你谷歌下,很多例子
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
比如我有一个Activity,在切换之前需要传递参数,这样应该如何实现?
而且,用viewFlipper的话,所有Layout必须定义在一个XML中?不是很方便
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));
后来我进去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的部分。