ฉันทำอะไรหายไปหรือFragment
ไม่มีonRestoreInstanceState()
วิธีการ? ถ้าไม่ฉันจะบรรลุสิ่งที่คล้ายกันได้อย่างไร
ฉันทำอะไรหายไปหรือFragment
ไม่มีonRestoreInstanceState()
วิธีการ? ถ้าไม่ฉันจะบรรลุสิ่งที่คล้ายกันได้อย่างไร
คำตอบ:
แฟรกเมนต์ไม่มีonRestoreInstanceState
เมธอด
คุณสามารถบรรลุผลลัพธ์เดียวกันonActivityCreated
ซึ่งได้รับบันเดิลที่มีสถานะอินสแตนซ์ที่บันทึกไว้ (หรือ null)
ฉันรู้ว่าคุณยอมรับคำตอบแล้ว แต่คุณควรอ่านเอกสารอย่างเป็นทางการเกี่ยวกับชิ้นส่วนและระบุว่า (ย่อหน้า "การจัดการวงจรชีวิตของชิ้นส่วน"):
คุณสามารถคงสถานะของแฟรกเมนต์ไว้ได้โดยใช้ Bundle ในกรณีที่กระบวนการของกิจกรรมถูกฆ่าและคุณจำเป็นต้องกู้คืนสถานะแฟรกเมนต์เมื่อสร้างกิจกรรมใหม่ คุณสามารถบันทึกสถานะระหว่างการเรียกกลับ onSaveInstanceState () ของแฟรกเมนต์และเรียกคืนระหว่าง onCreate (), onCreateView () หรือ onActivityCreated ()
ดังนั้นคุณสามารถใช้ชุดที่ดีที่สุดที่คุณ: onCreate()
, onCreateView()
หรือonActivityCreated()
ในตัวอย่าง ListFragment ของคู่มือ Fragments คุณจะพบ:
@Override
public void onSaveInstanceState(Bundle outState) {
super.onSaveInstanceState(outState);
outState.putInt("curChoice", mCurCheckPosition);
}
ซึ่งคุณสามารถใช้ได้ดังนี้:
@Override
public void onActivityCreated(Bundle savedInstanceState) {
super.onActivityCreated(savedInstanceState);
if (savedInstanceState != null) {
// Restore last state for checked position.
mCurCheckPosition = savedInstanceState.getInt("curChoice", 0);
}
}
onActivityCreated()
ถูกเรียกใช้หลังจากที่ส่วนย่อยกลับมาจากสแต็ก
onViewStateRestored
ของFragment
เทียบเท่าของของonRestoreInstanceState
Activity
แต่จะเรียกว่า after onActivityCreated(Bundle)
and before onStart()
.