一、TabActivity 实现
布局id与结构
TabHost(id不可变,不是继承的TabActivity 可变)(下不能有第二个子控件)
LinearLayout(id不可变必须使用系统默认的id)(下可加其他布局必须有下面两个)
TabWidget(id不可变必须使用系统默认的id)
FrameLayout(id不可变必须使用系统默认的id)
TabHost(id不可变(id不可变,不是继承的TabActivity 可变)(下不能有第二个子控件)
LinearLayout(id不可变必须使用系统默认的id)(下可加其他布局必须有下面两个)
TabWidget(id不可变必须使用系统默认的id)
FrameLayout(id不可变必须使用系统默认的id)
获得TabHost和设置tab和content(可以view id,TabContentFactory(创建一个view),Intent(Activity跳转))
1.MyActivity继承的是Activity
mTabHost = (TabHost) findViewById(android.R.id.tabhost);
mTabHost.setup();
//如果用intent
//LocalActivityManager(过时了)
//LocalActivityManager mLocalActivityManager = new LocalActivityManager(this, false);
//mLocalActivityManager.dispatchCreate(savedInstanceState);
//mTabHost.setup(mLocalActivityManager);
mTabHost.addTab(tabHost.newTabSpec("one").setIndicator("tab1")
.setContent(new Intent(this, FirstActivity.class)));
2.MyActivity继承的是ActivityGroup(过时了)
mTabHost = (TabHost) findViewById(android.R.id.tabhost);
mTabHost.setup();
//如果用intent
// mTabHost.setup(this.getLocalActivityManager())
mTabHost.addTab(tabHost.newTabSpec("one").setIndicator("tab1")
.setContent(new Intent(this, FirstActivity.class)));
3.MyActivity继承的是TabActivity(过时了)
tabhost = getTabHost();
mTabHost.addTab(tabHost.newTabSpec("one").setIndicator("tab1")
.setContent(new Intent(this, FirstActivity.class)));
二、ActivityGroup 实现
radiobutton作为标签,某一个布局作为内容。关键代码
tabContentView.removeAllViews();
tabContentView.addView(getLocalActivityManager().startActivity("two",new Intent(MainView.this, TwoView.class))
TabActivity可以用某一视图作为内容,也可用一个Activity作为内容,ActivityGroup用一个Activity作为内容。TabActivity,ActivityGroup用Activity作为内容是,内容activity在创建之后切换页的时候只执行onPause 和 onResume。附件是两种实现。
三、Fragment实现tab
用radiobutton做标签,一个布局做内容容器关键代码
FragmentTransaction fragmentTransaction = fragmentManager .beginTransaction();
fragmentTransaction.add(R.id.container, placeholderFragement);
fragmentTransaction.replace(R.id.content, fragment);
fragmentTransaction.commit();
切换tab fragment执行ondestroyview onstop onpause oncreateview onstart onresume
附件有代码