2014-10-23 14 views
6

Dopo aver aggiornato l'SDK di Android alla versione 5.0, il metodo getActionBar() ha iniziato a restituire null causando il blocco della mia app all'avvio. Sono senza tracce di ciò che sta causando questo e qualsiasi thread Stackoverflow esistente non ha aiutato.getActionBar() restituisce null dopo l'aggiornamento dell'SDK su 5.0

Ecco il mio manifesto:

<application 
    android:name="App" 
    android:allowBackup="true" 
    android:icon="@drawable/ic_launcher" 
    android:label="@string/app_name" 
    android:theme="@style/ActionBarTheme" > 

styles.xml:

<style name="AppBaseTheme" parent="Theme.AppCompat.Light"></style> 
<!-- Application theme. --> 
<style name="AppTheme" parent="AppBaseTheme"></style> 
<style name="ListItemPadding"> 
    <item name="android:paddingTop">8dp</item> 
    <item name="android:paddingRight">5dp</item> 
    <item name="android:paddingBottom">8dp</item> 
    <item name="android:paddingLeft">5dp</item> 
</style> 

themes.xml:

<?xml version="1.0" encoding="utf-8"?> 
<resources xmlns:android="http://schemas.android.com/apk/res/android"> 

<!-- the theme applied to the application or activity --> 
<style name="ActionBarTheme" parent="@style/Theme.AppCompat.Light.DarkActionBar"> 
    <item name="android:actionBarStyle">@style/ActionBar</item> 
    <item name="android:actionOverflowButtonStyle">@style/OverflowButton</item> 
    <!-- Support library compatibility --> 
    <item name="actionBarStyle">@style/ActionBar</item> 
    <item name="actionOverflowButtonStyle">@style/OverflowButton</item> 
</style> 

<style name="OverflowButton" parent="android:style/Widget.Holo.ActionButton.Overflow"> 
    <item name="android:src">@drawable/menu</item> 
</style> 

<!-- ActionBar styles --> 
<style name="ActionBar" parent="@style/Widget.AppCompat.Light.ActionBar.Solid.Inverse"> 
    <item name="android:background">@color/main</item> 

    <!-- Support library compatibility --> 
    <item name="background">@color/main</item> 
</style> 

</resources> 

e le mie dipendenze Gradle:

dependencies { 
compile 'com.github.jenzz.undobar:library:1.1:[email protected]' 
compile 'com.android.support:support-v4:21.0.0' 
compile 'com.android.support:appcompat-v7:21.0.0' 
compile 'com.loopj.android:android-async-http:1.4.5' 
compile 'com.nostra13.universalimageloader:universal-image-loader:1.9.3' 
compile 'com.google.android.gms:play-services:6.1.+' 
} 

Qualsiasi aiuto è molto apprezzato!

+1

'getActionBar()' di quale classe? derivato da 'ActionBarActivity'? quindi stai usando un metodo sbagliato (dovresti usare 'getSupportActionBar()') – Selvin

+0

@Selvin È la mia classe che estende un'attività. Questa è la linea che blocca l'attività: 'getActionBar(). SetDisplayHomeAsUpEnabled (false)' e quando rimuovo questa riga l'applicazione si avvia ma senza una barra di azioni. – bodyflex

+0

per cosa usi com.android.support:appcompat-v7:21.0.0 '? – pskink

risposta

16

Utilizzare getSupportActionBar() quando si utilizza ActionBarActivity e appcompat-v7, come sembra che si stia facendo qui.

+0

Non si usa comunque 'ActionBarActivity'. È un semplice 'Activity' e ha funzionato bene prima di essere aggiornato all'SDK più recente. – bodyflex

+1

@maxh: quindi sbarazzarsi di 'appcompat-v7' e passare a un tema Android predefinito e lontano da' Theme.AppCompat'. – CommonsWare

+0

Grazie! Questo ha risolto il problema. Strage che ha funzionato prima però. Ma ora dopo aver rimosso la libreria appcompat sta funzionando di nuovo. – bodyflex

0

Mi sono appena imbattuto in questo. Non usare AppCompat potrebbe non essere sempre una soluzione, specialmente se si è intenzionati ad usarlo. Pertanto, se si utilizza AppCompatActivity, provare ad inserire questo nel vostro layout.xml:

<android.support.v7.widget.Toolbar 
    android:id="@+id/toolbar" 
    android:layout_width="match_parent" 
    android:layout_height="?attr/actionBarSize" 
    android:layout_alignParentTop="true" 
    android:background="?attr/colorPrimary"/> 

Quindi, è possibile utilizzare getSupportActionBar().

Problemi correlati