sto inserendo frammenti in attività utilizzando questo codice:Frammento perso animazione della transizione dopo la modifica della configurazione
codicepublic void onCreate(Bundle savedInstanceState)
{
super.onCreate(savedInstanceState);
setContentView(R.layout.main);
FragmentManager fm = getFragmentManager();
String tag = "simple";
Fragment fr = fm.findFragmentByTag(tag);
if (fr == null)
{
SimpleFragment simpleFragment = new SimpleFragment();
FragmentTransaction transaction = fm.beginTransaction();
transaction.setCustomAnimations(android.R.animator.fade_in, android.R.animator.fade_out,
android.R.animator.fade_in, android.R.animator.fade_out);
transaction.add(R.id.main_layout, simpleFragment, tag);
transaction.addToBackStack(tag);
transaction.commit();
}
}
Fragments è:
public class SimpleFragment extends ListFragment
{
@Override
public void onActivityCreated(Bundle savedInstanceState)
{
super.onActivityCreated(savedInstanceState);
getView().setBackgroundColor(Color.YELLOW);
}
}
Quando ho pop il frammento da backstack tramite pulsante Indietro subito dopo il lancio, quindi tutto è a posto e posso vedere l'animazione in dissolvenza. Ma se ruoto il dispositivo e premi il pulsante Indietro, il frammento scompare senza animazione.
È un comportamento Android o sto facendo qualcosa di sbagliato?
MODIFICA: Sembra che dopo la rotazione FragmentManager non abbia ripristinato le animazioni (enterAnim, exitAnim, popEnterAnim e popExitAnim) per BackStackEntry.
discarica FragmentManager (senza rotazione):
Active Fragments in 4087d668:
#0: SimpleFragment{408883b0 #0 id=0x7f050000 simple}
mFragmentId=#7f050000 mContainerId#=7f050000 mTag=simple
mState=4 mIndex=0 mWho=android:fragment:0 mBackStackNesting=1
mAdded=true mRemoving=false mResumed=true mFromLayout=false mInLayout=false
mHidden=false mDetached=false mRetainInstance=false mRetaining=false mHasMenu=false
mFragmentManager=FragmentManager{4087d668 in ListViewFragmentsActivity{4087d588}}
[email protected]
[email protected]
mNextAnim=17498112
[email protected]
[email protected]
Added Fragments:
#0: SimpleFragment{408883b0 #0 id=0x7f050000 simple}
Back Stack:
#0: [email protected]
mName=simple mIndex=0 mCommitted=true
mEnterAnim=#10b0000 mExitAnim=#10b0001
Operations:
Op #0:
cmd=1 fragment=SimpleFragment{408883b0 #0 id=0x7f050000 simple}
enterAnim=17498112 exitAnim=17498113
popEnterAnim=17498112 popExitAnim=17498113
Back Stack Indices:
#0: [email protected]
FragmentManager misc state:
mCurState=5 mStateSaved=false mDestroyed=false
discarica FragmentManager (dopo la rotazione):
Active Fragments in 40877f38:
#0: SimpleFragment{40878858 #0 id=0x7f050000 simple}
mFragmentId=#7f050000 mContainerId#=7f050000 mTag=simple
mState=4 mIndex=0 mWho=android:fragment:0 mBackStackNesting=1
mAdded=true mRemoving=false mResumed=true mFromLayout=false mInLayout=false
mHidden=false mDetached=false mRetainInstance=false mRetaining=false mHasMenu=false
mFragmentManager=FragmentManager{40877f38 in ListViewFragmentsActivity{40877e58}}
[email protected]
[email protected]
[email protected]
[email protected]
Added Fragments:
#0: SimpleFragment{40878858 #0 id=0x7f050000 simple}
Back Stack:
#0: [email protected]
mName=simple mIndex=0 mCommitted=false
Operations:
Op #0:
cmd=1 fragment=SimpleFragment{40878858 #0 id=0x7f050000 simple}
Back Stack Indices:
#0: [email protected]
FragmentManager misc state:
mCurState=5 mStateSaved=false mDestroyed=false
Anche io sto avendo lo stesso problema. Hai avuto fortuna a capirlo? – khendricks
@khendricks No e tu? – Max
Sfortunatamente no. Sono scioccato dal fatto che non ci siano molte altre persone che si lamentano di questo. Ho creato una segnalazione di bug per questo problema. http://code.google.com/p/android/issues/detail?id=25994&can=4&colspec=ID%20Type%20Status%20Owner%20Summary%20Stars – khendricks