Autore Topic: ActionBar layout  (Letto 814 volte)

Offline lillogoal

  • Utente normale
  • ***
  • Post: 167
  • Respect: +4
    • Google+
    • lillosogliani
    • Mostra profilo
    • LilloNet
  • Dispositivo Android:
    Galaxy s3, Nexus 7,galaxy s advance,galaxy scl
  • Play Store ID:
    Lillonet Inc.
  • Sistema operativo:
    Windows 8,7 & Kali-Linux
ActionBar layout
« il: 30 Agosto 2013, 00:28:40 CEST »
0
Salve a tutti,
ho appena notato nella mia app che uso l'actionbar con dei fragment, quando lascio l'app in background per un po' e la riapro.
I vari layout si mescolano succede una casino... probabile che dipenda da come ho configurato la classe delle tab.
Ve la posta qua sotto:
Codice (Java): [Seleziona]
 private class TabListener<T extends Fragment> implements ActionBar.TabListener {

        private Fragment mFragment;

        private final Activity mActivity;

        private final String mTag;

        private final Class<T> mClass;

        public TabListener(Activity activity, String tag, Class<T> clz) {

            mActivity = activity;

            mTag = tag;

            mClass = clz;

        }
        public void onTabSelected(ActionBar.Tab tab, FragmentTransaction ft) {

            // Check if the fragment is already initialized

            if (mFragment == null) {

                // If not, instantiate and add it to the activity

                mFragment = Fragment.instantiate(mActivity, mClass.getName());

                ft.add(android.R.id.content, mFragment, mTag);


            } else {

                // If it exists, simply attach it in order to show it
                ft.show(mFragment);
                //ft.attach(mFragment);

            }

        }
        public void onTabUnselected(ActionBar.Tab tab, FragmentTransaction ft) {

            if (mFragment != null) {

                // Detach the fragment, because another one is being attached

               // ft.detach(mFragment);
                ft.hide(mFragment);
            }

        }
        public void onTabReselected(ActionBar.Tab tab, FragmentTransaction ft) {

//                ft.replace(tab.getPosition(),mFragment);

            // User selected the already selected tab. Usually do nothing.
        }

    }
Chi non progetta la sicurezza , programma il fallimento! K.M

Offline GabMarioPower

  • Moderatore globale
  • Utente senior
  • *****
  • Post: 606
  • Respect: +153
    • Github
    • Google+
    • gabrielemariotti
    • GabMarioPower
    • Mostra profilo
  • Play Store ID:
    GAB+MARIO+DEV
  • Sistema operativo:
    Ubuntu 14.04 , Win 10
Re:ActionBar layout
« Risposta #1 il: 30 Agosto 2013, 08:41:19 CEST »
0
Salve a tutti,
ho appena notato nella mia app che uso l'actionbar con dei fragment, quando lascio l'app in background per un po' e la riapro.
I vari layout si mescolano succede una casino... probabile che dipenda da come ho configurato la classe delle tab.


Che vuoi dire con si mescolano e succede un casino?
« Ultima modifica: 30 Agosto 2013, 14:59:30 CEST da GabMarioPower »

Offline lillogoal

  • Utente normale
  • ***
  • Post: 167
  • Respect: +4
    • Google+
    • lillosogliani
    • Mostra profilo
    • LilloNet
  • Dispositivo Android:
    Galaxy s3, Nexus 7,galaxy s advance,galaxy scl
  • Play Store ID:
    Lillonet Inc.
  • Sistema operativo:
    Windows 8,7 & Kali-Linux
Re:ActionBar layout
« Risposta #2 il: 30 Agosto 2013, 09:40:04 CEST »
0
Vanno uno sopra l'altro... appena mi ricapita ti posto uno screen!

Post unito: 30 Agosto 2013, 10:08:46 CEST
Questo succede quando lascio in background l'app per un po' e nel frattempo ne uso altre... solo che non riesco a capire da cosa dipenda... dalla ram? ho sbagliato qualcosa nel codice?
Ecco qua lo screen, per intenderci meglio:

Post unito: 30 Agosto 2013, 11:55:08 CEST
Risolto così:
Mettendo nel AndroidManifest.xml
Codice: [Seleziona]
android:configChanges="orientation|screenSize|keyboardHidden"
                android:windowSoftInputMode="adjustPan"
« Ultima modifica: 30 Agosto 2013, 11:55:08 CEST da lillogoal, Reason: Merged DoublePost »
Chi non progetta la sicurezza , programma il fallimento! K.M

Offline GabMarioPower

  • Moderatore globale
  • Utente senior
  • *****
  • Post: 606
  • Respect: +153
    • Github
    • Google+
    • gabrielemariotti
    • GabMarioPower
    • Mostra profilo
  • Play Store ID:
    GAB+MARIO+DEV
  • Sistema operativo:
    Ubuntu 14.04 , Win 10
Re:ActionBar layout
« Risposta #3 il: 30 Agosto 2013, 15:08:07 CEST »
0

Risolto così:
Mettendo nel AndroidManifest.xml
Codice: [Seleziona]
android:configChanges="orientation|screenSize|keyboardHidden"
                android:windowSoftInputMode="adjustPan"

Attenzione !
Quello che tu hai inserito fa si che quando si cambia l'orientamento del device l'Activity non venga ricreata, ma venga chiamato il metodo onConfigurationChanged().
Questa cosa è molto pericolosa. In un tablet molto difficilmente hai lo stesso layout fra orizzontale e verticale.
Se blocchi l'activity non viene cambiato il layout per esempio.

Il problema che hai, non è stato risolto.
Probabilmente è legato al metodo onCreate() della tua Activity o nel metodo onResume().

Offline lillogoal

  • Utente normale
  • ***
  • Post: 167
  • Respect: +4
    • Google+
    • lillosogliani
    • Mostra profilo
    • LilloNet
  • Dispositivo Android:
    Galaxy s3, Nexus 7,galaxy s advance,galaxy scl
  • Play Store ID:
    Lillonet Inc.
  • Sistema operativo:
    Windows 8,7 & Kali-Linux
Re:ActionBar layout
« Risposta #4 il: 30 Agosto 2013, 16:10:49 CEST »
0
Io ho bloccolato l'orientamento dell'app!! Quindi come potrei risolvere nel metodo che dici te?
Chi non progetta la sicurezza , programma il fallimento! K.M

Offline bradipao

  • Moderatore globale
  • Utente storico
  • *****
  • Post: 4043
  • keep it simple
  • Respect: +567
    • Github
    • Google+
    • bradipao
    • Mostra profilo
  • Dispositivo Android:
    Nexus 5
  • Play Store ID:
    Bradipao
  • Sistema operativo:
    W7
Re:ActionBar layout
« Risposta #5 il: 30 Agosto 2013, 16:24:29 CEST »
0
Come dice GabMarioPower, potrebbe (sottolineo potrebbe visto che non c'è codice) essere dovuto alla onCreate.

Se vedi nella spiegazione ufficiale dell'uso dei Fragments ( Building a Flexible UI | Android Developers ) ad un certo punto del codice di esempio c'è la onCreate e parla di overlapping Fragments:

Codice (Java): [Seleziona]
    public void onCreate(Bundle savedInstanceState) {

            // However, if we're being restored from a previous state,
            // then we don't need to do anything and should return or else
            // we could end up with overlapping fragments.
            if (savedInstanceState != null) {
                return;
            }

Prova a verificare se si applica al tuo caso.
NON rispondo a domande nei messaggi privati
Bradipao @ Play Store

Offline GabMarioPower

  • Moderatore globale
  • Utente senior
  • *****
  • Post: 606
  • Respect: +153
    • Github
    • Google+
    • gabrielemariotti
    • GabMarioPower
    • Mostra profilo
  • Play Store ID:
    GAB+MARIO+DEV
  • Sistema operativo:
    Ubuntu 14.04 , Win 10
Re:ActionBar layout
« Risposta #6 il: 30 Agosto 2013, 16:32:54 CEST »
+1
Io ho bloccolato l'orientamento dell'app!! Quindi come potrei risolvere nel metodo che dici te?

Te lo sconsiglio.Bloccare l'orientamento dell'app è un anti pattern su Android.
Decisamente un buon motivo per disinstallare una app.

Offline lillogoal

  • Utente normale
  • ***
  • Post: 167
  • Respect: +4
    • Google+
    • lillosogliani
    • Mostra profilo
    • LilloNet
  • Dispositivo Android:
    Galaxy s3, Nexus 7,galaxy s advance,galaxy scl
  • Play Store ID:
    Lillonet Inc.
  • Sistema operativo:
    Windows 8,7 & Kali-Linux
Re:ActionBar layout
« Risposta #7 il: 30 Agosto 2013, 16:34:42 CEST »
0
Vi ringrazio, se trovate altee soluzioni fatemelo sapere...
Sta sera provo e vi facxio sapere :) poi vi do i Thanks.

Quindi devo incollare quel pezzo di codice nel main activity nella oncreate?


Post unito: 30 Agosto 2013, 17:38:18 CEST
Ecco il codice dell'onCreate della Main Activity
Codice (Java): [Seleziona]
@Override
    protected void onCreate(Bundle savedInstanceState)
{
        super.onCreate(savedInstanceState);
}
« Ultima modifica: 30 Agosto 2013, 17:38:18 CEST da lillogoal, Reason: Merged DoublePost »
Chi non progetta la sicurezza , programma il fallimento! K.M