Most visited

Recently visited

Added in API level 1
Deprecated since API level 13

TabActivity

public class TabActivity
extends ActivityGroup

java.lang.Object
   ↳ android.content.Context
     ↳ android.content.ContextWrapper
       ↳ android.view.ContextThemeWrapper
         ↳ android.app.Activity
           ↳ android.app.ActivityGroup
             ↳ android.app.TabActivity


此类在API级别13中已被弃用。
新的应用程序应该使用Fragments而不是这个类; 要继续在较旧的设备上运行,您可以使用v4支持库,该库提供与DONUT兼容的Fragment API版本。

对于针对 HONEYCOMB或更高版本开发的应用程序,通常会在界面中使用新的 ActionBar.newTab()和相关API将选项卡呈现在其操作栏区域内。

TabActivity的替代也可以通过直接使用TabHost来实现。 您将需要定义一个布局,该布局正确使用带有TabWidget的TabHost以及用于显示标签内容的区域。 一个典型的例子是:

<android.support.v4.app.FragmentTabHost
    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:orientation="vertical"
        android:layout_width="match_parent"
        android:layout_height="match_parent">

        <TabWidget
            android:id="@android:id/tabs"
            android:orientation="horizontal"
            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"/>

        <FrameLayout
            android:id="@+id/realtabcontent"
            android:layout_width="match_parent"
            android:layout_height="0dp"
            android:layout_weight="1"/>

    </LinearLayout>
</android.support.v4.app.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);
    }
}

另请参阅 Fragment Tabs Pager示例以获取使用支持库的ViewPager的示例,以允许用户轻扫内容以在选项卡之间切换。

Summary

Inherited constants

From class android.app.Activity
From class android.content.Context
From interface android.content.ComponentCallbacks2

Inherited fields

From class android.app.Activity

Public constructors

TabActivity()

Public methods

TabHost getTabHost()

返回活动用于托管其选项卡的 TabHost

TabWidget getTabWidget()

返回活动用于绘制实际制表符的 TabWidget

void onContentChanged()

内容更改时更新屏幕状态(当前列表和其他视图)。

void setDefaultTab(String tag)

设置突出显示的第一个选项卡的默认选项卡。

void setDefaultTab(int index)

设置突出显示的第一个选项卡的默认选项卡。

Protected methods

void onChildTitleChanged(Activity childActivity, CharSequence title)
void onPostCreate(Bundle icicle)

当活动启动完成时调用(在 onStart()onRestoreInstanceState(Bundle)之后)。

void onRestoreInstanceState(Bundle state)

这个方法在 onStart()之后被调用,当这个活动正在从之前保存的状态重新初始化时,这里在 savedInstanceState给出

void onSaveInstanceState(Bundle outState)

在被杀之前调用以从活动中检索每个实例的状态,以便可以在 onCreate(Bundle)onRestoreInstanceState(Bundle)恢复状态(由此方法填充的 Bundle将传递到两者)。

Inherited methods

From class android.app.ActivityGroup
From class android.app.Activity
From class android.view.ContextThemeWrapper
From class android.content.ContextWrapper
From class android.content.Context
From class java.lang.Object
From interface android.view.LayoutInflater.Factory2
From interface android.view.Window.Callback
From interface android.view.KeyEvent.Callback
From interface android.view.View.OnCreateContextMenuListener
From interface android.content.ComponentCallbacks2
From interface android.view.LayoutInflater.Factory
From interface android.content.ComponentCallbacks

Public constructors

TabActivity

Added in API level 1
TabActivity ()

Public methods

getTabHost

Added in API level 1
TabHost getTabHost ()

返回活动用于托管其选项卡的 TabHost

Returns
TabHost the TabHost the activity is using to host its tabs.

getTabWidget

Added in API level 1
TabWidget getTabWidget ()

返回活动用于绘制实际制表符的 TabWidget

Returns
TabWidget the TabWidget the activity is using to draw the actual tabs.

onContentChanged

Added in API level 1
void onContentChanged ()

内容更改时更新屏幕状态(当前列表和其他视图)。

也可以看看:

setDefaultTab

Added in API level 1
void setDefaultTab (String tag)

设置突出显示的第一个选项卡的默认选项卡。

Parameters
tag String: the name of the default tab

setDefaultTab

Added in API level 1
void setDefaultTab (int index)

设置突出显示的第一个选项卡的默认选项卡。

Parameters
index int: the index of the default tab

Protected methods

onChildTitleChanged

Added in API level 1
void onChildTitleChanged (Activity childActivity, 
                CharSequence title)

Parameters
childActivity Activity
title CharSequence

onPostCreate

Added in API level 1
void onPostCreate (Bundle icicle)

当活动启动完成时调用(在onStart()onRestoreInstanceState(Bundle)之后)。 应用程序通常不会实现这种方法; 它旨在让系统类在应用程序代码运行后进行最终初始化。

派生类必须调用超类的这个方法的实现。 如果他们不这样做,就会抛出异常。

Parameters
icicle Bundle: If the activity is being re-initialized after previously being shut down then this Bundle contains the data it most recently supplied in onSaveInstanceState(Bundle). Note: Otherwise it is null.

onRestoreInstanceState

Added in API level 1
void onRestoreInstanceState (Bundle state)

这种方法被称为后onStart()savedInstanceState这里给出当活动正在从以前保存的状态重新初始化。 大多数实现将简单地使用onCreate(Bundle)来恢复其状态,但在完成所有初始化或允许子类决定是否使用默认实现之后,在此处执行操作有时很方便。 此方法的默认实现可以恢复先前被onSaveInstanceState(Bundle)冻结的任何视图状态。

此方法称为 onStart()onPostCreate(Bundle)之间。

Parameters
state Bundle: the data most recently supplied in onSaveInstanceState(Bundle).

onSaveInstanceState

Added in API level 1
void onSaveInstanceState (Bundle outState)

在被杀之前调用以从活动中检索每个实例的状态,以便可以在 onCreate(Bundle)onRestoreInstanceState(Bundle)恢复状态(由此方法填充的 Bundle将传递给两者)。

在一个活动可能被杀死之前调用这个方法,以便在将来它有一段时间它可以恢复它的状态。 例如,如果活动B在活动A之前启动,并且在某些时刻活动A被杀死以回收资源,则活动A将有机会通过此方法保存其用户界面的当前状态,以便当用户返回时到活动A,用户界面的状态可以通过onCreate(Bundle)onRestoreInstanceState(Bundle)恢复。

不要将此方法与活动生命周期回调混淆,例如onPause() ,当活动置于后台或销毁途中时总是调用该方法,或在销毁前调用onStop() onPause()onStop()被调用时的一个例子是,当用户从活动B返回到活动A时:不需要在B上调用onSaveInstanceState(Bundle) ,因为该特定实例永远不会被恢复,所以系统避免调用它。 onPause()被调用时的示例,而不是onSaveInstanceState(Bundle)是活动B在活动A前面启动时的示例A:如果活动A在A的用户界面的状态期间未在B的生存onSaveInstanceState(Bundle) ,则系统可以避免对活动A调用onSaveInstanceState(Bundle)将保持完好。

默认实现通过在具有ID的层次结构中的每个视图上调用onSaveInstanceState() ,并通过保存当前焦点视图的ID(所有视图均由缺省实现恢复)来为您处理大部分UI每实例状态的onRestoreInstanceState(Bundle) )。 如果您重写此方法以保存未被每个视图捕获的附加信息,那么您可能需要调用默认实现,否则应准备好保存每个视图的所有状态。

如果调用,此方法将在onStop()之前onStop() onPause()之前或之后是否会发生保证。

Parameters
outState Bundle: Bundle in which to place your saved state.

Hooray!