Có một số lớp Xem trong Android nên lưu trạng thái của chúng khi vùng chứa của chúng được tách ra. Fragment.onViewCreated() nên được gọi trước khi View.onSaveInstanceState(). Vì vậy, nếu bạn đặt một giá trị trong phương thức Fragment.onViewCreated(). Giá trị phải được xóa trong phương thức View.onRestoreInstanceState (trạng thái Parcelable).
Ví dụ, lớp TextView, RecyclerView và do đó on.You có thể đọc các quy tắc ứng TextView.java:
public Parcelable onSaveInstanceState() {
Parcelable superState = super.onSaveInstanceState();
// Save state if we are forced to
final boolean freezesText = getFreezesText();
boolean hasSelection = false;
int start = -1;
int end = -1;
....
if (freezesText || hasSelection) {
SavedState ss = new SavedState(superState);
....
}
....
}
Có để params để kiểm soát xem để cứu nhà nước: "freezesText" và "hasSelection ". Không thể chọn Chế độ xem văn bản, do đó, chọn Lựa chọn là sai. Hàm getFreezesText(), trả về false trong lớp TextView. Vì vậy, TextView sẽ không lưu trạng thái. mã của EditText.java:
@Override
public boolean getFreezesText() {
return true;
}
EditText trả về true, vì vậy EditText sẽ lưu trạng thái.
Có một số phương pháp để sửa chữa lỗi này:
1.implement EditText.getFreezesText() và trả về false, và rõ ràng tình trạng chọn trong EditText
2.implement onSaveInstanceState của EditText , trở null.like này:
public Parcelable onSaveInstanceState() {
super.onSaveInstanceState();
return null;
}
3.sử dụng EditText.setSaveEnable (sai);
4.add param trong xml "saveEnable = 'false'"
Những mảnh vỡ yêu cầu API Level 11 hoặc lớn –
@AndroidApple Tôi nghĩ rằng nó an toàn để giả định ông đang sử dụng các thư viện tương thích -_- nên hes không sai khi làm như vậy lmao – Andy
Có Tôi đang sử dụng thư viện Tương thích. –