在android 3.2上搜索actionbar中的元素时,findViewById返回null

在android 3.2上搜索actionbar中的元素时,findViewById返回null,android,android-actionbar,actionbarsherlock,Android,Android Actionbar,Actionbarsherlock,我正在开发一个使用自定义actionbar布局的应用程序,该布局通过themes.xml中的android:actionBarStyle和android:customNavigationLayout引用。 该栏中有一些元素,如重新加载和一些信息按钮。 在android 4设备上,可以通过findViewById(活动内部)找到这些按钮,但在android 3.2上findViewById返回null。这会抛出一个NullPointerException 该应用程序正在使用ActionbarShe

我正在开发一个使用自定义actionbar布局的应用程序,该布局通过
themes.xml
中的
android:actionBarStyle
android:customNavigationLayout
引用。 该栏中有一些元素,如重新加载和一些信息按钮。 在
android 4
设备上,可以通过
findViewById
(活动内部)找到这些按钮,但在
android 3.2上
findViewById
返回null。这会抛出一个NullPointerException

该应用程序正在使用ActionbarSherlock 4.2.0

以下是themes.xml文件:

 <style name="Theme.SRF.Tablet" parent="style/Theme.Sherlock">
     <item name="android:windowContentOverlay">@drawable/header_shadow</item>
     <item name="android:actionBarStyle">@style/TTTActionBar</item> </style>

 <style name="TTTActionBar" parent="style/Widget.Sherlock.ActionBar">
     <item name="android:background">@drawable/bg_header</item>
     <item name="android:customNavigationLayout">@layout/actionbar_custom</item>
 </style>

我不知道这是否对你有帮助,但是:

尝试添加:

<item name="customNavigationLayout">@layout/custom_action</item>
@layout/custom\u操作
配合:

<item name="android:customNavigationLayout">@layout/custom_action</item>
@layout/custom\u操作

onCreate
中还不能保证视图准备就绪,您需要等到
onCreateView
或甚至
onActivityCreated
安全。通常情况下,
onCreateView
是可以的,但最好对视图执行空检查,以防万一

请注意,可以在片段的活动仍处于活动状态时调用它 被创造的过程。因此,你不能依赖这样的东西 此时正在初始化活动的内容视图层次结构。 如果要在创建活动本身后执行工作,请参阅 onActivityCreated(捆绑)

调用以使片段实例化其用户界面视图。这 是可选的,非图形片段可以返回null(这是 默认实现)。这将在onCreate(Bundle)之间调用 和onActivityCreated(捆绑)

如果从此处返回视图,稍后将调用您 当视图被释放时,onDestroyView()

当片段的活动已创建且 片段的视图层次结构已实例化。它可以用来做期末考试 在这些片段就位后初始化,例如检索 视图或恢复状态。对于使用 setRetainInstance(布尔值)以保留其实例,如此回调 告知片段何时与新活动完全关联 例如。这在onCreateView(LayoutFlater、ViewGroup、, 捆绑)和onViewStateRestored(捆绑)之前


如果您使用的是Sherlock活动,请尝试
getSupportActionBar().getCustomView().findViewById(…)
,但我不知道为什么它在不同的Android版本上表现不同。getSupportActionBar().getCustomView()返回空值:(请提供你的
@layout/actionbar\u custom
你在简历中尝试过这个吗?
这个版面可能还没有完成。你不是应该为每个主题项目指定两个名称吗?一个前缀是
android:
,另一个不可以你可以把压缩后的代码放在某个地方吗?啊,是的,这是我在q上的评论中的意思。)uestion。如果您澄清为什么需要这样做,这将是一个更好的答案。+1。(我认为这是因为ABS没有使用3.1中的默认AB,所以ABS不使用带有
android:
名称空间的项目)
<item name="android:customNavigationLayout">@layout/custom_action</item>