Most visited

Recently visited

FragmentTabHost

public class FragmentTabHost
extends TabHost implements TabHost.OnTabChangeListener

java.lang.Object
   ↳ android.view.View
     ↳ android.view.ViewGroup
       ↳ android.widget.FrameLayout
         ↳ android.widget.TabHost
           ↳ android.support.v4.app.FragmentTabHost


特殊的Fragment ,允许使用Fragment对象作为其标签内容。 将其放入视图层次结构中时,在对层次结构进行膨胀后,必须调用setup(Context, FragmentManager, int)才能完成标签主机的初始化。

下面是一个在活动中使用FragmentTabHost的简单示例:

import com.example.android.supportv4.R;

import android.os.Bundle;
import android.support.v4.app.FragmentActivity;
import android.support.v4.app.FragmentTabHost;

/**
 * This demonstrates how you can implement switching between the tabs of a
 * TabHost through fragments, using FragmentTabHost.
 */
public class FragmentTabs extends FragmentActivity {
    private FragmentTabHost mTabHost;

    @Override
    protected void onCreate(Bundle savedInstanceState) {
        super.onCreate(savedInstanceState);

        setContentView(R.layout.fragment_tabs);
        mTabHost = (FragmentTabHost)findViewById(android.R.id.tabhost);
        mTabHost.setup(this, getSupportFragmentManager(), R.id.realtabcontent);

        mTabHost.addTab(mTabHost.newTabSpec("simple").setIndicator("Simple"),
                FragmentStackSupport.CountingFragment.class, null);
        mTabHost.addTab(mTabHost.newTabSpec("contacts").setIndicator("Contacts"),
                LoaderCursorSupport.CursorLoaderListFragment.class, null);
        mTabHost.addTab(mTabHost.newTabSpec("custom").setIndicator("Custom"),
                LoaderCustomSupport.AppListFragment.class, null);
        mTabHost.addTab(mTabHost.newTabSpec("throttle").setIndicator("Throttle"),
                LoaderThrottleSupport.ThrottledLoaderListFragment.class, null);
    }
}

这也可以通过片段嵌套在片段中使用:

import com.example.android.supportv4.R;

import android.os.Bundle;
import android.support.v4.app.Fragment;
import android.support.v4.app.FragmentTabHost;
import android.view.LayoutInflater;
import android.view.View;
import android.view.ViewGroup;

public class FragmentTabsFragmentSupport extends Fragment {
    private FragmentTabHost mTabHost;

    @Override
    public View onCreateView(LayoutInflater inflater, ViewGroup container,
            Bundle savedInstanceState) {
        mTabHost = new FragmentTabHost(getActivity());
        mTabHost.setup(getActivity(), getChildFragmentManager(), R.id.fragment1);

        mTabHost.addTab(mTabHost.newTabSpec("simple").setIndicator("Simple"),
                FragmentStackSupport.CountingFragment.class, null);
        mTabHost.addTab(mTabHost.newTabSpec("contacts").setIndicator("Contacts"),
                LoaderCursorSupport.CursorLoaderListFragment.class, null);
        mTabHost.addTab(mTabHost.newTabSpec("custom").setIndicator("Custom"),
                LoaderCustomSupport.AppListFragment.class, null);
        mTabHost.addTab(mTabHost.newTabSpec("throttle").setIndicator("Throttle"),
                LoaderThrottleSupport.ThrottledLoaderListFragment.class, null);

        return mTabHost;
    }

    @Override
    public void onDestroyView() {
        super.onDestroyView();
        mTabHost = null;
    }
}

Summary

Inherited XML attributes

From class android.widget.FrameLayout
From class android.view.ViewGroup
From class android.view.View

Inherited constants

From class android.view.ViewGroup
From class android.view.View

Inherited fields

From class android.view.View

Public constructors

FragmentTabHost(Context context)
FragmentTabHost(Context context, AttributeSet attrs)

Public methods

void addTab(TabHost.TabSpec tabSpec, Class<?> clss, Bundle args)
void onTabChanged(String tabId)
void setOnTabChangedListener(TabHost.OnTabChangeListener l)

当此列表中任何项目的选定状态更改时,注册一个回调以供调用

void setup()

此方法已弃用。 不要调用原始的setup(Context, FragmentManager)设置,而必须调用setup(Context, FragmentManager)setup(Context, FragmentManager, int)

void setup(Context context, FragmentManager manager, int containerId)
void setup(Context context, FragmentManager manager)

Protected methods

void onAttachedToWindow()

这在视图附加到窗口时被调用。

void onDetachedFromWindow()

这是在视图从窗口分离时调用的。

void onRestoreInstanceState(Parcelable state)

吊钩允许视图重新应用先前由 onSaveInstanceState()生成的内部状态的表示。

Parcelable onSaveInstanceState()

钩子允许视图生成其内部状态的表示,稍后可用于创建具有相同状态的新实例。

Inherited methods

From class android.widget.TabHost
From class android.widget.FrameLayout
From class android.view.ViewGroup
From class android.view.View
From class java.lang.Object
From interface android.view.ViewTreeObserver.OnTouchModeChangeListener
From interface android.view.ViewParent
From interface android.view.ViewManager
From interface android.graphics.drawable.Drawable.Callback
From interface android.view.KeyEvent.Callback
From interface android.view.accessibility.AccessibilityEventSource
From interface android.widget.TabHost.OnTabChangeListener

Public constructors

FragmentTabHost

FragmentTabHost (Context context)

Parameters
context Context

FragmentTabHost

FragmentTabHost (Context context, 
                AttributeSet attrs)

Parameters
context Context
attrs AttributeSet

Public methods

addTab

void addTab (TabHost.TabSpec tabSpec, 
                Class<?> clss, 
                Bundle args)

Parameters
tabSpec TabHost.TabSpec
clss Class
args Bundle

onTabChanged

void onTabChanged (String tabId)

Parameters
tabId String

setOnTabChangedListener

void setOnTabChangedListener (TabHost.OnTabChangeListener l)

当此列表中任何项目的选定状态更改时,注册一个回调以供调用

Parameters
l TabHost.OnTabChangeListener: The callback that will run

setup

void setup ()

此方法已弃用。
不要调用原始的setup(Context, FragmentManager)设置,而必须调用setup(Context, FragmentManager)setup(Context, FragmentManager, int)

如果使用findViewById()加载TabHost,请在添加选项卡之前调用setup()。 但是 :您不需要在TabActivity中的TabActivity ()之后调用setup()。 例:

mTabHost = (TabHost)findViewById(R.id.tabhost);
mTabHost.setup();
mTabHost.addTab(TAB_TAG_1, "Hello, world!", "Tab 1");

setup

void setup (Context context, 
                FragmentManager manager, 
                int containerId)

Parameters
context Context
manager FragmentManager
containerId int

setup

void setup (Context context, 
                FragmentManager manager)

Parameters
context Context
manager FragmentManager

Protected methods

onAttachedToWindow

void onAttachedToWindow ()

这在视图附加到窗口时被调用。 此时它有一个Surface并将开始绘制。 请注意,此函数保证在onDraw(android.graphics.Canvas)之前onDraw(android.graphics.Canvas) ,但可能会在第一次onDraw之前的任何时间调用此函数 - 包括onMeasure(int, int)之前或之后。

onDetachedFromWindow

void onDetachedFromWindow ()

这是在视图从窗口分离时调用的。 此时它不再有绘图表面。

onRestoreInstanceState

void onRestoreInstanceState (Parcelable state)

吊钩允许视图重新应用先前由onSaveInstanceState()生成的内部状态的表示。 这个函数永远不会被调用为null状态。

Parameters
state Parcelable: The frozen state that had previously been returned by onSaveInstanceState().

onSaveInstanceState

Parcelable onSaveInstanceState ()

钩子允许视图生成其内部状态的表示,稍后可用于创建具有相同状态的新实例。 此状态应仅包含不持久或以后不能重建的信息。 例如,您永远不会将当前位置存储在屏幕上,因为当视图的新实例放置在其视图层次结构中时会再次计算该位置。

您可能在此处存储的某些示例:文本视图中的当前光标位置(但通常不是文本本身,因为它存储在内容提供程序或其他永久性存储中),即当前在列表视图中选择的项目。

Returns
Parcelable Returns a Parcelable object containing the view's current dynamic state, or null if there is nothing interesting to save. The default implementation returns null.

Hooray!