如何从位于选项卡内的活动中获取视图,而视图位于选项卡外部



我有一个包含操作栏和选项卡的布局:

<TabHost xmlns:android="http://schemas.android.com/apk/res/android"
    android:id="@android:id/tabhost"
    android:layout_width="fill_parent"
    android:layout_height="fill_parent">
    <LinearLayout style="@style/BackgroundLayer">
        <!-- Action Bar with buttons -->
        <include layout="@layout/incl_actionbar"/>
        <TabWidget
            android:id="@android:id/tabs"
            android:layout_width="fill_parent"
            android:layout_height="wrap_content"/>
        <FrameLayout
            android:id="@android:id/tabcontent"
            android:layout_width="fill_parent"
            android:layout_height="fill_parent"
            android:padding="5dp" />
    </LinearLayout>
</TabHost>

在操作栏上,我有几个按钮,我需要能够从选项卡中的活动访问它们。但是 findViewById 对于位于操作栏上的任何视图都返回 null - 我发现这非常合乎逻辑,因为对于选项卡内的任何活动,他们的 contentRoot 是 FrameLayout(而操作栏是我们这边),但尽管如此,我需要访问操作栏,因为所有当前可用操作的图标都位于那里。

我还考虑将操作栏作为选项卡内所有活动的意图的额外内容传递,但 View 不可序列化或可包裹,因此不能作为额外内容传递。

让 TabActivity 提供对操作栏的访问。子活动应使用以下代码请求操作栏,例如:

View actionBar = ((CustomTabActivity) getParent()).getActionBar();
您将获得

操作栏视图。

int resId = getResources().getIdentifier("action_bar_container", "id", "android");
View actionbarView =  getWindow().getDecorView().findViewById(resId);

相关内容

  • 没有找到相关文章

最新更新