actionbar tab的页面切换
1.
package com.bwf.tabs; import android.os.Bundle; import android.app.ActionBar; import android.app.ActionBar.Tab; import android.app.Activity; import android.app.Fragment; import android.app.FragmentTransaction; import android.util.Log; import android.view.Menu; import android.widget.Toast; /** * 使用ActionBar的Tab进行页面导航切换的基本流程 * 1. 准备页面,Fragment * 2. 获取ActionBar对象 * 3. 设置导航的模式ab.setNavigationMode(ActionBar.NAVIGATION_MODE_TABS); * 4. 获取选项卡对象Tab对象 * 5. 给Tab设置相关的属性比如文字、图片 * 6. 创建Tab的监听 * a. 定义一个类来实现一个接口ActionBar.TabListener * b. 复写接口中的三个回调方法 * 选中选项、取消选项、重复选项 * onTabSelected:通常去添加对应页面的Fragment * onUnselected:通常去里边移除掉之前的Fragment * onReslected:通常提示选中的选项卡就是当前的选项卡 * 7. 把选项卡对象Tab设置监听 * 8. 把选项卡添加到ActionBar中去 * */ public class MainActivity extends Activity { @Override protected void onCreate(Bundle savedInstanceState) { super.onCreate(savedInstanceState); setContentView(R.layout.activity_main); ActionBar ab = getActionBar(); // 设置为Tab模式 ab.setNavigationMode(ActionBar.NAVIGATION_MODE_TABS); // 获取3个Tab对象并设置标题 ActionBar.Tab ab_1 = ab.newTab().setText("蓝色界面"); ActionBar.Tab ab_2 = ab.newTab().setText("绿色界面"); ActionBar.Tab ab_3 = ab.newTab().setText("橙色界面"); // 创建并绑定Fragment Frag_01 f1 = new Frag_01(); Frag_02 f2 = new Frag_02(); Frag_03 f3 = new Frag_03(); // 给每个Tab设置监听 ab_1.setTabListener(new MyListener(f1)); ab_2.setTabListener(new MyListener(f2)); ab_3.setTabListener(new MyListener(f3)); // 默认情况下,Tab出现的顺序和添加的顺序一致,初始选中最先添加的Tab // 当然在添加时,可以选择添加的位置 ab.addTab(ab_1); ab.addTab(ab_3); ab.addTab(ab_2); } /** * 定义TabListener监听器 * */ class MyListener implements ActionBar.TabListener { Fragment fragment; public MyListener(Fragment fragment) { super(); this.fragment = fragment; } /** * 选中Tab时调用 * 在此方法中完成Fragment的添加或者切换工作 * */ @Override public void onTabSelected(Tab tab, FragmentTransaction ft) { ft.add(android.R.id.content, fragment); myLog("onTabSelected"); } /** * 从选中状态脱离时调用 * 在此方法中完成移除Fragment的操作 * */ @Override public void onTabUnselected(Tab tab, FragmentTransaction ft) { ft.remove(fragment); myLog("onTabUnselected"); } /** * 如果Tab已经是选中状态,再次选中时调用 * 通常会给出已经选中的提示 * */ @Override public void onTabReselected(Tab tab, FragmentTransaction ft) { myLog("onTabReselected"); myToast("已经是选中状态了"); } } void myLog(String s) { Log.d("fanhy", s); } void myToast(String s) { Toast.makeText(getApplicationContext(), s, Toast.LENGTH_LONG).show(); } }
2.其他两个省略
package com.bwf.tabs; import android.app.Fragment; import android.os.Bundle; import android.view.LayoutInflater; import android.view.View; import android.view.ViewGroup; public class Frag_01 extends Fragment{ @Override public View onCreateView(LayoutInflater inflater, ViewGroup container, Bundle savedInstanceState) { // TODO Auto-generated method stub return inflater.inflate(R.layout.frag_01, container, false); } }
浙公网安备 33010602011771号