find32ById在android 3.2上的操作栏中搜索元素时返回null

sto*_*fln 6 android actionbarsherlock android-actionbar

我正在开发一个使用自定义操作栏布局的应用程序,该布局通过android:actionBarStyleandroid:customNavigationLayout在中引用themes.xml.栏中有一些元素,如重载和一些信息按钮.在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>
Run Code Online (Sandbox Code Playgroud)

活动:

    @Override
    protected void onCreate(Bundle _savedInstanceState) {
        setContentView(...);
        // next line throws NullPointerException on android 3.2
        findViewById(R.id.actionbar_custom_bt_refresh).setOnClickListener(mClickListener);
        ....
    }
Run Code Online (Sandbox Code Playgroud)

Chi*_*oni 6

我不知道这对你有帮助,但是从这里开始:

尝试添加:

<item name="customNavigationLayout">@layout/custom_action</item>
Run Code Online (Sandbox Code Playgroud)

同意:

<item name="android:customNavigationLayout">@layout/custom_action</item>
Run Code Online (Sandbox Code Playgroud)