5

aggiungo e rimuovere i frammenti in questo modo:Rimuovere frammento incidente

ADD

getSherlockActivity().getSupportFragmentManager() 
           .beginTransaction() 
           .setCustomAnimations(R.anim.slide_in_bottom, R.anim.slide_out_top, R.anim.slide_in_top, R.anim.slide_out_bottom) 
           .add(R.id.fragment_explore, fragment) 
           .addToBackStack(null) 
           .commit(); 
ActivityMain.BACKSTACK_EXPLORE.add(fragment); 

RIMUOVERE

Fragment depopFragment = BACKSTACK_EXPLORE.get(BACKSTACK_EXPLORE.size() - 1); 
        getSupportFragmentManager().beginTransaction() 
               .setCustomAnimations(R.anim.slide_in_top, R.anim.slide_out_bottom, R.anim.slide_in_bottom, R.anim.slide_out_top) 
               .remove(depopFragment) 
               .commit(); 
        BACKSTACK_EXPLORE.remove(depopFragment); 

C'è un'animazione scorrimento veloce. Il frammento arriva dal basso e torna al basso.

Il mio problema è quando si preme il pulsante Indietro (depop il frammento) e prima che l'animazione è finita si tocca l'attività che appare dietro.

Mi dà una semplice fatale errore del segnale 11 (più spesso sul Samsung Galaxy s3)

Qualche idea?

+0

Probabilmente non correlati al tuo problema, ma frammenti mantenendo (che negozio Context) in un contenitore statico è cattiva pratica. Potrebbe portare a perdite di contesto. – Dmide

+0

Replicazione: questo succede solo su samsung galaxy s3 (android 4.3) mai su nexus4 (android4.4). Questo succede solo quando si rimuove il frammento. Solo se clicco su "framment1 behind" mentre l'animazione di rimozione di "framment2 above" è ancora attiva –

risposta

8

ho risolto, era legato alla onCreateAnimation(), che ho usato per sapere quando l'animazione era finito

view.setLayerType(LAYER_TYPE_NONE, null); 

questa linea stava facendo l'incidente. Sembra essere collegato con l'accelerazione hardware e molto probabilmente solo su Android 4.3

vedere questo link: Disable hardware acceleration, backward compatibility

Problemi correlati