ความเข้าใจเพิ่มเติม setRetainInstance (true)
สิ่งที่ว่าเกิดขึ้นเมื่อคุณโทรsetRetainInstance(true)บนFragment? เอกสารนั้นแทบไม่มีอยู่จริงและดูเหมือนว่าเป็นหน้าที่ที่สำคัญมาก โดยเฉพาะฉันต้องการทราบว่าลำดับนี้ (ที่ฉันสร้างขึ้น) เป็นจริงมากแค่ไหน: ผู้ใช้หมุนเครื่อง ส่วนที่แยกออกจากActivityและFragment.onDetach()ถูกเรียก กิจกรรมถูกทำลาย Activity.onDestroy()ถูกเรียก. Activityวัตถุ Java เป็นลบ (เมื่อเป็นไปได้โดยการ GC) สร้างActivityวัตถุ java ใหม่ ตัวสร้างและonCreate()เรียกว่า ในActivity.onCreate()เรามีsetContentView(...)ซึ่งกำหนดเลย์เอาต์ที่มีแฟรกเมนต์หรือใช้FragmentTransaction เพื่อเพิ่มแฟรกเมนต์ ฉันไม่แน่ใจเกี่ยวกับเรื่องนี้จริงๆ แต่ฉันคิดว่า android ฉลาดพอที่จะค้นหาชิ้นส่วนเก่าและโทรหาFragment.onAttach()เพื่อแนบกลับเข้าไปใหม่Activity ถัดไป (หรือก่อนหน้านี้ใครจะรู้?) Activity.onResume()เรียกว่า ถูกต้องหรือไม่? Android ฉลาดพอที่จะค้นหาชิ้นส่วนเก่าแม้ว่าฉันจะใช้FragmentTransaction.add(new MyFragment(), ...)ครั้งแรกอย่างชัดเจนหรือไม่ และถ้าเป็นเช่นนั้นฉันจะหลีกเลี่ยงการเพิ่มส่วนอื่นในได้onCreate()อย่างไร ฉันต้องทำสิ่งนี้หรือไม่: if (getSupportFragmentManager().findFragmentByTag("foo") == null) { FragmentTransaction ft = getSupportFragmentManager().beginTransaction(); ft.add(new FooFragment(), "foo").commit(); }