如何从位于选项卡内部的活动获取视图,而视图位于选项卡外部
我有一个包含操作栏和选项卡的布局:
<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 不可序列化或可打包,因此它不能作为额外的内容传递。
I have a layout which inludes actionbar and tabs:
<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>
And on the actionbar I have several buttons that I need to be able to access from activities within tabs. But findViewById returns null for any view located on the actionbar - I find this quite logical, because for any activity inside tab their contentRoot is FrameLayout (and actionbar is ourside of it), but nevertheless I need an access to the actionbar, because icons for all currently available actions are located there.
I also have thought of passing actionbar as extra to intents for all activities inside tabs, but View is not serializable nor Parcelable, so it can't be passed as extra.
如果你对这篇内容有疑问,欢迎到本站社区发帖提问 参与讨论,获取更多帮助,或者扫码二维码加入 Web 技术交流群。
绑定邮箱获取回复消息
由于您还没有绑定你的真实邮箱,如果其他用户或者作者回复了您的评论,将不能在第一时间通知您!
发布评论
评论(2)
让 TabActivity 提供对操作栏的访问。子活动应使用以下代码请求操作栏,例如:
Let TabActivity provide access to actionbar. Child activities should request actionbar using the following code, e.g.:
您将获得操作栏视图。
You will get action bar view.