在android 3.2上搜索actionbar中的元素时,findViewById返回null
我正在开发一个使用自定义actionbar布局的应用程序,该布局通过在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
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>