2012-05-14 14 views
5

Uso la barra delle azioni di Sherlock nella mia applicazione. Ho usato la funzione "ifRoom | withText" nel mio menu. Se provo il mio codice in modalità verticale, posso vedere solo l'icona e se ruoto l'orientamento in orizzontale, vedo ancora solo l'icona. D'altra parte, se corro con il panorama, posso vedere il testo e l'icona su verticale e orizzontale. Ciò significa che quando lo schermo viene ruotato, la barra delle azioni non viene aggiornata. Come posso risolvere?Lo scherlock della barra delle azioni non viene aggiornato quando l'orientamento viene modificato

Nel menù, ho

android:showAsAction="ifRoom|withText" 

Inoltre ho usato questa linea nel mio file manifesto a fisso

android:configChanges="keyboardHidden|orientation|screenSize" 

ma non ha funzionato. E corro il mio codice di Android 2.3

Inoltre ho usato frammento nella mia attività,

 FragmentManager fm = getSupportFragmentManager(); 
    ft = fm.beginTransaction(); 

    mFragment1 = fm.findFragmentByTag("f1"); 

    if (mFragment1 == null) { 

     mFragment1 = new MenuFragment(); 
     ft.add(mFragment1, "f1"); 

    } 

    ft.commit(); 

risposta

6

Gestione configurazione le modifiche non sono supportate con ActionBarSherlock.

Su pre-ICS, ActionBarSherlock NON fa parte della vista di decorazione come la barra di azione nativa e pertanto è soggetto alle stesse restrizioni della vista del contenuto. Gestendo le modifiche alla configurazione non si consente alla libreria di adattarsi alla modifica e pertanto verranno visualizzati display errati o determinate parti.

La documentazione di Android scoraggia anche le modifiche di configurazione della gestione. Evitali a tutti i costi, specialmente quando usi ActionBarSherlock.

Su una nota correlata, sto ancora cercando di aggirare questo per le versioni future della libreria, ma per ora è consigliabile evitare.

+0

Ho un codice che è stato inserito nel mio metodo onDestroy, ma ho appena aggiunto ABS, che ora chiama onDestroy quando si ruota. Pensi che la mia migliore scommessa sia quella di spostare quel codice nel gestore per il pulsante indietro? Grazie – Matt

+0

Sei libero di sovrascrivere 'onDestroy' a patto che ti ricordi di chiamare il metodo della superclasse. –

+0

Ho dimenticato di dire che in precedenza non stavo distruggendo attività su rotazione. Quindi ho spostato il codice sul metodo onBackPressed. – Matt

0

penso che sarà necessario ricreare il menu ActionBar sui cambiamenti di configurazione

invalidateOptionsMenu(); 
+0

Grazie per la risposta, ho provato la tua funzione in modifica della configurazione ma non ha funzionato. Hai qualche altra idea? – SavasCinar

+0

Il mio unico altro suggerimento sarebbe provare supportInvalidateOptionsMenu(); – Tony

+0

Grazie, Tony, ma ancora non ha avuto alcun effetto. Non so, dov'è il problema – SavasCinar

Problemi correlati