วิธีการบันทึกสถานะของชิ้นส่วนอินสแตนซ์ในสแต็กหลังอย่างถูกต้อง
ฉันพบคำถามที่คล้ายกันจำนวนมากใน SO แต่ไม่มีคำตอบที่ตรงกับความต้องการของฉัน ฉันมีเลย์เอาต์ที่แตกต่างกันสำหรับแนวตั้งและแนวนอนและฉันใช้แบ็คสแต็กซึ่งทั้งสองป้องกันไม่ให้ฉันใช้setRetainState()และลูกเล่นโดยใช้รูทีนการเปลี่ยนแปลงการกำหนดค่า ฉันแสดงข้อมูลบางอย่างแก่ผู้ใช้ใน TextViews ซึ่งไม่ได้รับการบันทึกในตัวจัดการเริ่มต้น เมื่อเขียนแอปพลิเคชันของฉัน แต่เพียงผู้เดียวโดยใช้กิจกรรมสิ่งต่อไปนี้ใช้ได้ดี: TextView vstup; @Override public void onCreate(Bundle savedInstanceState) { super.onCreate(savedInstanceState); setContentView(R.layout.whatever); vstup = (TextView)findViewById(R.id.whatever); /* (...) */ } @Override public void onSaveInstanceState(Bundle state) { super.onSaveInstanceState(state); state.putCharSequence(App.VSTUP, vstup.getText()); } @Override public void onRestoreInstanceState(Bundle state) { super.onRestoreInstanceState(state); vstup.setText(state.getCharSequence(App.VSTUP)); } ด้วยFragments สิ่งนี้ใช้ได้เฉพาะในสถานการณ์ที่เฉพาะเจาะจงเท่านั้น โดยเฉพาะสิ่งที่แตกอย่างน่ากลัวคือแทนที่ชิ้นส่วนวางไว้ในกองหลังแล้วหมุนหน้าจอในขณะที่ชิ้นส่วนใหม่จะปรากฏขึ้น จากสิ่งที่ฉันเข้าใจส่วนเก่าไม่ได้รับสายไปonSaveInstanceState()เมื่อถูกแทนที่ แต่การเข้าพักที่เชื่อมโยงอย่างใดไปActivityและวิธีการนี้เรียกว่าต่อมาเมื่อมันViewไม่ได้อยู่อีกต่อไปดังนั้นมองหาใด …