7

アプリケーションは actionbarsherlock を使用しますが、メイン アクティビティ get 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>
    ...

themes.xml:

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

LogonActivity.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 はそれを (名前空間なし / デフォルトの abs 名前空間) にラップしているwindowNoTitleため、アプリケーションがインストールされている 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+とプレICSでうまく機能し、アンドロイド2.3.5、2.3.7、CM7、アンドロイド4.0、4.1でテストします

于 2012-09-19T14:24:56.820 に答える
0

私の場合、テーマを設定し、アクションバーを取得するためandroid:theme="@style/Theme.Sherlock.NoActionBar"に呼び出すと、この問題に直面getSupportActionBar()します。アクションバーを管理したい場合は、それらを に変えるだけandroid:theme="@style/Theme.Sherlockです。

于 2013-01-06T14:50:39.087 に答える