2017-01-04 3 views
1

私は奇妙な問題に直面しています。 私は、次のコードを使用してsetCustomAnimation()を持つフラグメントを起動すると:カスタムアニメーションのフラグメントを開き、すぐに戻ってアプリをフリーズさせます。

/** 
    * launch a fragment 
    * 
    * @param containerID  - frameLayout ID 
    * @param fragment   - fragment we want to launch 
    * @param isAddToBackStack - add to back stack??? 
    */ 
    public void launchFragment(int containerID, Fragment fragment, boolean isAddToBackStack) { 
     FragmentManager mFragmentManager = getSupportFragmentManager(); 
     FragmentTransaction mFragmentTransaction = mFragmentManager.beginTransaction(); 

     mFragmentTransaction.setCustomAnimations(R.anim.anim_transition_enter_fade_in 
       , R.anim.anim_transition_exit_fade_out 
       , R.anim.anim_transaction_fade_in_pop 
       , R.anim.anim_transaction_fadeout_pop) 
       .replace(containerID, fragment); 

     if (isAddToBackStack) { 
      mFragmentTransaction.addToBackStack(null); 
     } 
     mFragmentTransaction.commitAllowingStateLoss(); 
    } 

アニメーションは、アプリがフリーズを完了する前に、私はすぐに戻ってボタンを押すと。 私はApp画面を記録しました。下記の動画をご覧ください:

https://drive.google.com/file/d/0BxFmkFbsB3NhNkRLbm8yQ195TUU/view?usp=drivesdk 

助けていただければ幸いです。 ありがとう

答えて

0

あなたのアプリは、アニメーションが終了する前に状態が失われていると思います。

あなたを交換してください:

mFragmentTransaction.commitAllowingStateLoss(); 

で:

mFragmentTransaction.commit(); 

上記のコードを変更することで、あなたにIllegalStateException: Can not perform this action after onSaveInstanceStateエラーが発生した場合は、

を、あなたは何が起こっているかについて、このBlogをチェックすることをお勧めします。

これが役に立ちます。

+0

ご協力いただきありがとうございますが、問題は解決しません。 mFragmentTransaction.commit()に変更します。助けてくれない –

+1

アニメーション部分を削除してみました。アニメーションがなくても正しく動作するので、アニメーションが問題を作り出しているようです。任意の解決策はありますか? –

関連する問題