如何在 Android 的子活动中找到标签主机?

Posted

技术标签:

【中文标题】如何在 Android 的子活动中找到标签主机?【英文标题】:How to find tab host in its sub activity in Android? 【发布时间】:2012-06-09 08:28:29 【问题描述】:

我正在创建一个自定义标签主机,在每个标签规范上打开不同的活动。我想在子活动上获取选项卡主机,以便在选项卡主机屏幕上查找线性布局。

select_item.xml(选项卡主机布局)

<LinearLayout xmlns:android="http://schemas.android.com/apk/res/android"
android:layout_
android:layout_
android:orientation="vertical" >

<include
    android:id="@+id/include1"
    android:layout_
    android:layout_
    layout="@layout/outcom_actionbar" >
</include>

<TabHost
    xmlns:android="http://schemas.android.com/apk/res/android"
    android:id="@android:id/tabhost"
    android:layout_        
    android:layout_ >

    <LinearLayout
        android:layout_
        android:layout_
        android:orientation="vertical" >

        <View
            android:layout_
            android:layout_
            android:background="#fff" />

        <TabWidget
            android:id="@android:id/tabs"
            android:layout_
            android:layout_
            android:layout_marginLeft="0dip"
            android:layout_marginRight="0dip" />

        <View
            android:layout_
            android:layout_
            android:background="#696969" />

        <View
            android:layout_
            android:layout_
            android:background="#add23b" />

        <FrameLayout
            android:id="@android:id/tabcontent"
            android:layout_
            android:layout_ />
    </LinearLayout>
</TabHost>

</LinearLayout>

SelectItem.java(自定义标签宿主)

public class SelectItem extends TabActivity    

private TabHost mTabHost;

private void setupTabHost() 
    mTabHost = (TabHost) findViewById(android.R.id.tabhost);
    mTabHost.setup();


@Override
public void onCreate(Bundle savedInstanceState) 
    super.onCreate(savedInstanceState);
    setContentView(R.layout.select_item);   
    context=this;       

    setupTabHost();
    mTabHost.getTabWidget().setDividerDrawable(null);
    setupTab(new TextView(this), getString(R.string.Positions),Constants.ActivityName.Positions.toString());
    setupTab(new TextView(this), getString(R.string.Sever),Constants.ActivityName.Sever.toString());



private void setupTab(final View view, final String tag,final String activityName) 
    View tabview = createTabView(mTabHost.getContext(), tag);

    TabSpec setContent = mTabHost.newTabSpec(tag).setIndicator(tabview).setContent(new TabContentFactory() 
        public View createTabContent(String tag) return view;
    );
    Intent  intent =null;
    if(activityName.compareToIgnoreCase(Constants.ActivityName.Positions.toString())==0)        
        intent = new Intent().setClass(this, Items.class);  
    else if(activityName.compareToIgnoreCase(Constants.ActivityName.Sever.toString())==0)
        intent = new Intent().setClass(this, Sever.class);      
    intent.putExtra(Constants.PROJECT_ID, projectId);
    setContent.setContent(intent);
    mTabHost.addTab(setContent);



private static View createTabView(final Context context, final String text) 
    View view = LayoutInflater.from(context).inflate(R.layout.tabs_bg, null);
    TextView tv = (TextView) view.findViewById(R.id.tabsText);
    tv.setText(text);
    return view;



在服务器活动中,我想查看 select_item.xml 文件中的 LinearLayout。但我可以在服务器活动中获取选项卡主机的详细信息。

请给我推荐可用的链接或示例代码。

【问题讨论】:

【参考方案1】:

这是一个可以帮助您的示例。 Click here 查看链接并在 GitHub 上查看他的项目。它真的帮助了我。

【讨论】:

以上是关于如何在 Android 的子活动中找到标签主机?的主要内容,如果未能解决你的问题,请参考以下文章

在 Tab 主机 android 中打开子活动

Android:如何集中活动标签

从Android中的子活动中取回对象[重复]

在android列表视图中向下滚动时出现***Exception

如何在每个活动中保持标签可见

如何在android中获取标签内容的高度和宽度?