2012-08-14 7 views
7

aplicación use actionbarsherlock, pero la actividad principal get getsportaportabarbar devuelve null. AndroidManifest.xml:actionbarsherlock getSupportActionBar() devuelve null en android4.0, pero en 2.3.3 está bien

<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()); 
    } 

Respuesta

9

que estaba frente a este mismo tema hace unas horas, y resultó, la La raíz del problema fue que utilicé un tema sin barra de título.

This reply de Jake Wharton, el desarrollador de actionbarsherlock te ayudará a solucionarlo.

En resumen: en las versiones de Android ICS y posteriores, establecer el atributo android:windowNoTitle afectará a la visualización de la barra de acciones (ya que es una función principal en esas versiones).

El ABS lo ha envuelto en windowNoTitle (sin espacio de nombres/espacio de nombres ABS predeterminado), por lo que dependiendo de la versión de Android en la que esté instalada su aplicación, obtendrá la visualización adecuada.

Si tiene la línea

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

en su definición de estilo, simplemente cambiarlo a

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

o completamente dejarlo fuera/sacarlo de su tema (abs manejar correctamente!)

1

Estaba enfrentando este mismo problema ahora, y encontré que el uso de android: theme = "@ style/Theme.Sherlock" es suficiente.

si utiliza

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

o

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

Será bloqueo de la aplicación, puede ser Jake solucionar este problema en Theme.Sherlock.

Así que aquí está mi solución ahora:

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

y funciona bien en ICS + y pre-ICS, prueba en Android 2.3.5,2.3.7, CM7, androide 4.0,4.1

0

En mi caso, me enfrento a este problema cuando configuro el tema android:theme="@style/Theme.Sherlock.NoActionBar", luego llamo al getSupportActionBar() para obtener la barra de acciones. Si desea administrar la barra de acciones, simplemente gírelas al android:theme="@style/Theme.Sherlock.

0

Tuve el mismo problema. Tengo una línea de código eliminada simple y funciona como un amuleto.

requestWindowFeature(Window.FEATURE_NO_TITLE); 
Cuestiones relacionadas