FragmentPagerAdapter
を使用して、私のメインのアプリケーションクラスのOnCreate()
にListFragment
を表示しています。単に:アクティビティがフラグメントを再作成しないようにする方法
viewPager = (ViewPager) findViewById(R.id.viewpager);
ViewPagerAdapter adapter = new ViewPagerAdapter(getSupportFragmentManager());
adapter.addFragment(new TripListFragment(), "Reissulista");
viewPager.setAdapter(adapter);
tabLayout = (TabLayout) findViewById(R.id.tabs);
tabLayout.setupWithViewPager(viewPager);
ViewPagerAdapter
は少しFragmentPagerAdapter
を拡張し、TripListFragment
がListFragment
です。
これはうまくいきますが、アプリケーションが長い間、背中の上にあって破棄されてしまった場合、再開時にアプリがクラッシュします。 ListFragment
はメインアクティビティから直接データにアクセスし、データはまだロードされません。ただし、フラグメント番号をOnCreate
に追加する前にデータがロードされます。
super.OnCreate()
の残りが私のOnCreate
が完了する前にメモリから断片を再構築しようとしていることがわかりました。
質問は、どのようにしてOnCreate
スーパーメソッドが私のものを作り直して、それを適切な方法でやり直さないようにすることができますか?そして私はすべきですか? ListFragment
に必要なデータを保持させる方が適切でしょうか。しかし、もし私がそれをしたら、私は新しいものを作成するときに、メモリのどこかに重複フラグメントを取得しませんか?
私は解決策はありませんが、アクティビティがフラグメントを再作成したい場合は、そのことを防ぐ必要はありません。代わりにそれを使用することを学ぶ –
あなたはライフサイクルメソッドの制約の中で価値があるべきであり、それらを破壊しようとはしません。 –