7

应用程序使用 actionbarsherlock,但主要活动获取 getsupportactionbar 返回 null。AndroidManifest.xml:

    <application
    android:icon="@drawable/ic_launcher"
    android:label="@string/app_name"
    android:theme="@style/Light1Theme" >
    <activity
        android:name=".activity.LogonActivity"
        android:configChanges="orientation|keyboardHidden"
        android:windowSoftInputMode="adjustUnspecified|stateHidden" >
        <intent-filter>
            <action android:name="android.intent.action.MAIN" />
            <category android:name="android.intent.category.LAUNCHER" />
        </intent-filter>
    </activity>
    ...

主题.xml:

    <style name="Light1Theme" parent="Theme.Sherlock.Light">

登录活动.ava

    extends SherlockActivity implements OnSharedPreferenceChangeListener {
    ...
    public void onCreate(Bundle savedInstanceState) {
    super.onCreate(savedInstanceState);
    //requestWindowFeature(Window.FEATURE_NO_TITLE);
    //getWindow().setFlags(WindowManager.LayoutParams.FLAG_FULLSCREEN,  WindowManager.LayoutParams.FLAG_FULLSCREEN);       

    setContentView(R.layout.logon);

    try{
    final ActionBar ab = getSupportActionBar();
    //return null
    ab.setBackgroundDrawable(getResources().getDrawable(R.drawable.ab_bg_black));
    getSupportActionBar().setIcon(R.drawable.hospital);
    }catch(Exception e){
        Log.e("", e.getMessage());
    }
4

4 回答 4

9

几个小时前我遇到了同样的问题,结果问题的根源是我使用了一个没有标题栏的主题。

来自 actionbarsherlock 的开发者 Jake Wharton 的回复将帮助您解决问题

简而言之:在 android 版本的 ICS 和更新版本上,设置属性android:windowNoTitle会影响操作栏的显示(因为它是那些版本中的核心功能)。

ABS 已将其包装到windowNoTitle(没有命名空间/默认 abs 命名空间),因此根据您的应用程序安装的 android 版本,您将获得正确的显示。

如果你有线

<item name="android:windowNoTitle">true</item>

在您的样式定义中,只需将其更改为

<item name="windowNoTitle">true</item>

或完全将其排除在外/从您的主题中删除(abs 将正确处理它!)

于 2012-09-04T12:07:52.197 回答
1

我现在面临同样的问题,我发现使用 android:theme="@style/Theme.Sherlock" 就足够了。

如果你使用

<item name="windowNoTitle">true</item>

或者

<item name="android:windowNoTitle">true</item>

它会使应用程序崩溃,可能是 Jake 在 Theme.Sherlock 中修复了这个问题。

所以这是我现在的解决方案:

<application
    android:name="XXXXApplication"
    android:icon="@drawable/ic_launcher"
    android:label="@string/app_name"
    android:theme="@style/Theme.Sherlock" >

它在 ICS+ 和 pre-ICS 上运行良好,在 android 2.3.5,2.3.7,CM7, android 4.0,4.1 上测试

于 2012-09-19T14:24:56.820 回答
0

我有同样的问题。我已经简单地删除了下面的代码行,它的工作就像一个魅力。

requestWindowFeature(Window.FEATURE_NO_TITLE);
于 2013-08-16T21:34:38.373 回答
0

就我而言,我在设置主题时遇到了这个问题android:theme="@style/Theme.Sherlock.NoActionBar",然后调用getSupportActionBar()以获取操作栏。如果您想管理操作栏,只需将它们转为android:theme="@style/Theme.Sherlock

于 2013-01-06T14:50:39.087 回答