package com.example.actionbar2;
import android.annotation.SuppressLint;
import android.app.ActionBar;
import android.app.ActionBar.Tab;
import android.app.ActionBar.TabListener;
import android.app.Activity;
import android.app.Fragment;
import android.app.FragmentTransaction;
import android.os.Bundle;
import android.view.LayoutInflater;
import android.view.View;
import android.view.ViewGroup;
@SuppressLint("NewApi")
public class ActionBarActivity extends Activity {
@Override
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.tabhost);
// 1.获取实例化actionbar组件
ActionBar actionBar = super.getActionBar();
// 2.设置actionbar通过标题栏现实选项卡样式
actionBar.setNavigationMode(ActionBar.NAVIGATION_MODE_TABS);
actionBar.setDisplayShowTitleEnabled(false);
actionBar.setDisplayShowHomeEnabled(false);
// 3.新建选项卡,并且加载每一个选项卡的布局
Tab tab_one = actionBar.newTab().setText("menu1");
Tab tab_two = actionBar.newTab().setText("menu2");
Tab tab_three = actionBar.newTab().setText("menu3");
// -------------------------------------------------------------------------
// 切换选项卡的时候,必须加载一个界面出来,响应选项卡的点击事件,这里完成得二步,这里得添加监听器
// 监听器的添加必须在新增选项卡和添加选项卡之间,不然就出错
// 一.添加点击监听器,允许点击选项卡
tab_one.setTabListener(new MyTabListener(new MyFragment(
R.layout.activity_main)));
tab_two.setTabListener(new MyTabListener(new MyFragment(
R.layout.mylayout)));
tab_three.setTabListener(new MyTabListener(new MyFragment(
R.layout.activity_main)));
//扩展:Fragment生命周期和activity一致,同样有相同的方法,这里通过getView()方法取得我们的view,得到VIew我们就能操纵
//view里面的组件,同时当我们需要有监听器的时候,也是在Fragment中找到组件,添加相应的监听器,记住:这里监听器添加是在Fragment里面
//而不是tabhost里面
View view_Layout = new MyFragment(R.layout.activity_main).getView();
// 二.选项卡界面必须使用Fragment实现,Fragment:碎片,Fragment提供一块视图区域,允许响应用户
// 所有事件处理,Fragment对象会和activity生命周期一致。
// -------------------------------------------------------------------------
actionBar.addTab(tab_one);
actionBar.addTab(tab_two);
actionBar.addTab(tab_three);
}
}
class MyTabListener implements TabListener {
Fragment myFragment = null;
// 导入每个选项卡的布局试图
public MyTabListener(Fragment myFragment) {
this.myFragment = myFragment;
}
/**
* 这是第一次点击选择了其中一个选项卡
*/
// FragmentTransaction:用于加载我们选项卡视图的工具,加载当前选项卡布局
@Override
public void onTabSelected(Tab tab, FragmentTransaction ft) {
ft.add(R.id.myactivity_layout, this.myFragment, null);
}
/**
* 这是第二次选择同一个选项卡
*/
@Override
public void onTabReselected(Tab tab, FragmentTransaction ft) {
ft.add(R.id.myactivity_layout, this.myFragment, null);
// 可能的第二种情况,当前的发生了改变,替换原有的视图,ft.replace();
}
/**
* 这是不选择,相当于离开当前选项卡,选择其余选项卡
*/
@Override
public void onTabUnselected(Tab tab, FragmentTransaction ft) {
ft.remove(myFragment);
}
}
class MyFragment extends Fragment {
/**
* MyFragment:生命周期和activity的生命周期是一致的,activity实例化后立刻就会实例化Fragment
*/
int modify_layout = 0;
public MyFragment(int modify_layout) {
super();
this.modify_layout = modify_layout;
}
@Override
public View onCreateView(LayoutInflater inflater, ViewGroup container,
Bundle savedInstanceState) {
View myLayout = inflater.inflate(this.modify_layout, null);
return myLayout;
}
@Override
public View getView() {
return super.getView();
}
@Override
public void onStop() {
super.onStop();
}
@Override
public void onDestroyView() {
super.onDestroyView();
}
}
// 这来放布局文件进来,这个是actionbar的选项卡的玩法
<?xml version="1.0" encoding="UTF-8"?>
<TabHost xmlns:android="http://schemas.android.com/apk/res/android"
android:id="@android:id/tabhost"
android:layout_width="match_parent"
android:layout_height="match_parent" >
<LinearLayout
android:layout_width="match_parent"
android:layout_height="match_parent"
android:orientation="vertical" >
<FrameLayout
android:id="@+id/myactivity_layout"
android:layout_width="match_parent"
android:layout_height="0dp"
android:layout_weight="1" />
<TabWidget
android:id="@android:id/tabs"
android:layout_width="match_parent"
android:layout_height="wrap_content"
android:layout_weight="0" />
<FrameLayout
android:id="@android:id/tabcontent"
android:layout_width="0dp"
android:layout_height="0dp"
android:layout_weight="0" />
</LinearLayout>
</TabHost>
// <TabHost xmlns:android="http://schemas.android.com/apk/res/android"
// android:id="@android:id/tabhost"
// android:layout_width="match_parent"
// android:layout_height="match_parent" >
//
// <LinearLayout
// android:layout_width="match_parent"
// android:layout_height="match_parent"
// android:orientation="vertical" >
//
// <FrameLayout
// android:id="@+id/myactivity_layout"
// android:layout_width="match_parent"
// android:layout_height="0dp"
// android:layout_weight="1" />
//
// <TabWidget
// android:id="@android:id/tabs"
// android:layout_width="match_parent"
// android:layout_height="wrap_content"
// android:layout_weight="0" />
//
// <FrameLayout
// android:id="@android:id/tabcontent"
// android:layout_width="0dp"
// android:layout_height="0dp"
// android:layout_weight="0" />
//
// </LinearLayout>
//
// </TabHost>