`
疯狂的犀牛
  • 浏览: 34628 次
  • 性别: Icon_minigender_1
  • 来自: 深圳
社区版块
存档分类
最新评论

fragment tabs

 
阅读更多

下面的例子主要介绍action bar 的用法,以及它们是如何同其他action bar特性进行交互的。

 

 

public class FragmentTabs extends Activity {
    @Override
    protected void onCreate(Bundle savedInstanceState) {
        super.onCreate(savedInstanceState);

        final ActionBar bar = getActionBar();
        bar.setNavigationMode(ActionBar.NAVIGATION_MODE_TABS);
        bar.setDisplayOptions(0, ActionBar.DISPLAY_SHOW_TITLE);

        bar.addTab(bar.newTab()
                .setText("Simple")
                .setTabListener(new TabListener<FragmentStack.CountingFragment>(
                        this, "simple", FragmentStack.CountingFragment.class)));
        bar.addTab(bar.newTab()
                .setText("Contacts")
                .setTabListener(new TabListener<LoaderCursor.CursorLoaderListFragment>(
                        this, "contacts", LoaderCursor.CursorLoaderListFragment.class)));
        bar.addTab(bar.newTab()
                .setText("Apps")
                .setTabListener(new TabListener<LoaderCustom.AppListFragment>(
                        this, "apps", LoaderCustom.AppListFragment.class)));
        bar.addTab(bar.newTab()
                .setText("Throttle")
                .setTabListener(new TabListener<LoaderThrottle.ThrottledLoaderListFragment>(
                        this, "throttle", LoaderThrottle.ThrottledLoaderListFragment.class)));

        if (savedInstanceState != null) {
            bar.setSelectedNavigationItem(savedInstanceState.getInt("tab", 0));
        }
    }

    @Override
    protected void onSaveInstanceState(Bundle outState) {
        super.onSaveInstanceState(outState);
        outState.putInt("tab", getActionBar().getSelectedNavigationIndex());
    }

    public static class TabListener<T extends Fragment> implements ActionBar.TabListener {
        private final Activity mActivity;
        private final String mTag;
        private final Class<T> mClass;
        private final Bundle mArgs;
        private Fragment mFragment;

        public TabListener(Activity activity, String tag, Class<T> clz) {
            this(activity, tag, clz, null);
        }

        public TabListener(Activity activity, String tag, Class<T> clz, Bundle args) {
            mActivity = activity;
            mTag = tag;
            mClass = clz;
            mArgs = args;

            // Check to see if we already have a fragment for this tab, probably
            // from a previously saved state.  If so, deactivate it, because our
            // initial state is that a tab isn't shown.
            mFragment = mActivity.getFragmentManager().findFragmentByTag(mTag);
            if (mFragment != null && !mFragment.isDetached()) {
                FragmentTransaction ft = mActivity.getFragmentManager().beginTransaction();
                ft.detach(mFragment);
                ft.commit();
            }
        }

        public void onTabSelected(Tab tab, FragmentTransaction ft) {
            if (mFragment == null) {
                mFragment = Fragment.instantiate(mActivity, mClass.getName(), mArgs);
                ft.add(android.R.id.content, mFragment, mTag);
            } else {
                ft.attach(mFragment);
            }
        }

        public void onTabUnselected(Tab tab, FragmentTransaction ft) {
            if (mFragment != null) {
                ft.detach(mFragment);
            }
        }

        public void onTabReselected(Tab tab, FragmentTransaction ft) {
            Toast.makeText(mActivity, "Reselected!", Toast.LENGTH_SHORT).show();
        }
    }
}
 

 

分享到:
评论

相关推荐

    FragmentTabsTutorial

    在这个教程中,我们将深入探讨如何在Android中实现Fragment Tabs,以及它们在导航中的作用。 1. **Fragment的理解**: - Fragment是Android应用中的可重用部分,可以单独存在或者嵌入到Activity中。它们提供了更细...

    FragmentDemo-10

    4. **创建TabHost和设置Tabs** 创建TabHost需要首先调用TabHost的setup()方法,然后使用TabSpec来定义每个Tab的标签和内容。每个TabSpec的content部分通常关联一个Intent,但在FragmentDemo-10中,我们将使用...

    andriod自定义的Tabs标签菜单(viewpager+fragment)(直接拿来用)

    "andriod自定义的Tabs标签菜单(viewpager+fragment)"是一个很好的实践,它利用了ViewPager和Fragment来实现动态、可滑动的标签页效果。下面将详细讲解这一实现方式。 **一、ViewPager组件** ViewPager是Android ...

    Fragment实例-Android Studio项目

    Fragment是Android应用开发中的一个重要组件,它是在Android 3.0(API级别11)引入的,用于构建可重用的、模块化的用户界面部分。在这个"Fragment实例-Android Studio项目"中,我们可以深入理解Fragment的使用方法...

    Android 首页Fragment切换常用姿势

    &lt;com.google.android.material.tabs.TabLayout android:id="@+id/tab_layout" android:layout_width="match_parent" android:layout_height="?attr/actionBarSize" app:tabMode="fixed" /&gt; ``` ```java ...

    使用Fragment实现顶部菜单栏

    - 使用`androidx.viewpager.widget.ViewPager`和`com.google.android.material.tabs.TabLayout`库来实现滑动切换的Tab效果。 - `ViewPager`负责显示和切换Fragment,而`TabLayout`则用来展示Tab标签。 3. **创建...

    Tab&Fragment&Indicator

    在实际开发中,可以使用各种库来实现这种Tab和Fragment的交互,如`androidx.viewpager.widget.ViewPager`配合`com.google.android.material.tabs.TabLayout`,或者自定义实现。`ViewPager`用于在不同的Fragment间...

    Android Tab(TabLayout+Fragment)实现源码

    要使用TabLayout,你需要在布局XML文件中添加`com.google.android.material.tabs.TabLayout`元素,并设置相应的属性,如`android:id`,`app:tabMode`(定义Tab的模式,比如`fixed`或`scrollable`),以及`app:...

    Android的Fragment实现Tab切换

    &lt;com.google.android.material.tabs.TabLayout android:id="@+id/tab_layout" android:layout_width="match_parent" android:layout_height="?attr/actionBarSize" /&gt; // 在Activity的onCreate()方法中设置Tab ...

    TabsDemo(android选项卡的自定义实现)

    在`TabsDemo`中,ViewPager将负责管理各个Fragment的生命周期和显示。 3. **Fragment**:Fragment是Android应用中的一个模块化组件,它可以包含UI和其他功能。在选项卡布局中,每个Fragment代表一个独立的内容区域...

    Android actionBar与Fragment结合使用Demo

    在`ActionBar`与`Fragment`结合使用时,通常会将`Fragment`的切换操作绑定到`ActionBar`的导航模式,例如使用tabs。以下是实现这种结合的基本步骤: 1. 创建`Fragment`类:定义每个`Fragment`的UI和逻辑,例如`...

    android actionbar切换fragment demo

    `setNavigationMode()`设置导航模式,通常选择`NAVIGATION_MODE_TABS`或`NAVIGATION_MODE_LIST`来实现`Fragment`的切换。 3. **创建Tab或List项**:根据你在`ActionBar`中选择的导航模式,创建对应的Tab或List项。...

    (转载)安卓点击和滑动切换页面FragmentActivity

    &lt;com.google.android.material.tabs.TabLayout android:id="@+id/tab_layout" android:layout_width="match_parent" android:layout_height="wrap_content" /&gt; ``` 在FragmentActivity中: ```java ...

    Android Fragment ActionBar实现tab标签切换页面

    在Android应用开发中,`Fragment`和`ActionBar`是两个重要的组件,它们被广泛用于构建交互丰富的用户界面。本篇文章将深入探讨如何利用这两个组件来实现tab标签切换页面的效果。 `Fragment`是Android SDK中的一个类...

    ViewPage Fragment页面滑动切换

    &lt;androidx.tabs.TabLayout android:id="@+id/tab_layout" android:layout_width="match_parent" android:layout_height="?attr/actionBarSize" /&gt; android:id="@+id/view_pager" android:layout_width="match...

    android:TabHost+Fragment

    android:id="@android:id/tabs" android:layout_width="match_parent" android:layout_height="wrap_content" /&gt; android:id="@android:id/tabcontent" android:layout_width="match_parent" android:...

    viwpager加fragment运用

    在Android开发中,`ViewPager`和`Fragment`是两种非常重要的组件,它们广泛用于构建具有滑动页面效果的用户界面,比如选项卡式布局。在本教程中,我们将深入探讨如何将`ViewPager`与`Fragment`结合使用,以实现类似...

    Viewpager-Fragment 无限制添加

    &lt;com.google.android.material.tabs.TabLayout android:id="@+id/tab_layout" android:layout_width="match_parent" android:layout_height="?attr/actionBarSize" /&gt; android:id="@+id/view_pager" android:...

    Android actionBar与Fragment结合使用Demo2

    2. **设置ActionBar**:在主`Activity`的`onCreate`方法中,调用`getSupportActionBar()`获取`ActionBar`实例,然后通过`setNavigationMode()`方法将其设置为`NAVIGATION_MODE_TABS`。 3. **添加Tab**:使用`addTab...

    android利用viewPager和Fragment实现典型的选项卡界面

    &lt;com.google.android.material.tabs.TabLayout android:id="@+id/tab_layout" android:layout_width="match_parent" android:layout_height="wrap_content" app:layout_constraintBottom_toBottomOf="parent" /...

Global site tag (gtag.js) - Google Analytics