ViewPager+Fragment Fragment破棄後の状態保存回復白画面表示防止
1294 ワード
プロジェクトの过程の中で1つのわけのわからない问题に出会って、ただ同僚のopop携帯电话をテストして不定时に白屏の问题が现れて、ログを见て全く情报がありません.
その後、すべての携帯電話は横画面だけで白い画面が現れることに気づいた.ここにクロススクリーン防止のコードを入れると他機種では白スクリーンが出なくなり、問題が解決すると思った.その結果、同僚の携帯電話をテストしても白画面の問題が発生した.
これはとても気まずいです!
分析によると、スクリーンはライフサイクルを再実行し、Fragmentは破棄され、Fragment状態は保存されていない.つまり、ライフサイクルを再実行したときに回復できない.資料を探すことで、Fragment状態を保存することが分かった.
myFragmentを通過する必要があります.setArguments(bundle); 伝参を行い、私は以前構造関数によって直接行った伝参である.
public static MyFragment newInstance(int state) {
その後、すべての携帯電話は横画面だけで白い画面が現れることに気づいた.ここにクロススクリーン防止のコードを入れると他機種では白スクリーンが出なくなり、問題が解決すると思った.その結果、同僚の携帯電話をテストしても白画面の問題が発生した.
これはとても気まずいです!
分析によると、スクリーンはライフサイクルを再実行し、Fragmentは破棄され、Fragment状態は保存されていない.つまり、ライフサイクルを再実行したときに回復できない.資料を探すことで、Fragment状態を保存することが分かった.
myFragmentを通過する必要があります.setArguments(bundle); 伝参を行い、私は以前構造関数によって直接行った伝参である.
public static MyFragment newInstance(int state) {
MyFragment myFragment = new MyFragment();
Bundle bundle = new Bundle();
bundle.putInt("orderState", state);
//fragment , Bundle
myFragment.setArguments(bundle);
return myFragment;
}
伝参方式を変更した後、横画面の制限を解除し、携帯電話の横画面も白画面にならなくなった.