Tôi biết có rất nhiều quetions regarden onSaveInstanceState nhưng tôi không thể tìm thấy câu trả lời cho vấn đề của mình.onSaveInstanceState không nhận được cuộc gọi sau khi xoay màn hình
Tôi có một hoạt động mở rộng AppCompatActivity; hoạt động này sử dụng 3 đoạn và nó có một biến 'int currentStep' để theo dõi phân đoạn nào đang được hiển thị. Trong phương thức onSavedInstanceState, tôi lưu biến currentStep trong gói, và sau đó trong phương thức onCreate, tôi khôi phục nó.
public class MainActivity extends AppCompatActivity {
private final String CURRENT_STEP_TAG = "current_step";
private int currentStep;
@Override
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.activity_pedido);
if(savedInstanceState == null) {
loadFirstFragment();
} else {
currentStep = savedInstanceState.getInt(CURRENT_STEP_TAG);
if(currentStep == 2){
//Do some stuff...
}
}
}
@Override
public void onSaveInstanceState(Bundle outState, PersistableBundle outPersistentState) {
Log.d("deubg", "--------onsaveinstancestate--------");
outState.putInt(CURRENT_STEP_TAG, currentStep);
super.onSaveInstanceState(outState, outPersistentState);
}
...
}
Điều này là onSavedInstanceState sẽ không nhận được khi được thay đổi màn hình hoặc theo tài liệu của google. Thông báo "-------- onsaveinstancestate --------" không hiển thị trong bảng điều khiển. Tuy nhiên Bundle savedInstanceState trong phương thức onCreate không phải là null sau khi xoay màn hình, nhưng nó không có int 'currentStep'.
Tôi đã thử nhiều thứ: thay đổi AppCompatActivity cho ActionBarActivity, đã chuyển cuộc gọi cho super.onSavedInstanceState đến các vị trí khác nhau, đã cố lưu các biến khác; nhưng không có vấn đề gì tôi làm phương pháp không thực hiện.
Ngoài ra, tôi KHÔNG có android: configChanges trong tệp kê khai của mình.
ứng dụng của tôi đang được biên dịch chống lại sdk phiên bản 22, buildToolsVersion 22.0.1
Cảm ơn! Tôi đã không nhận ra rằng có một phiên bản mới hơn của mehtod. Nó hoạt động tốt ngay bây giờ. – VorteXavier
Một câu hỏi khác, sẽ onSaveInstanceState (Bundle outState); được gọi trong thiết bị chạy API21 + android? hoặc tôi có cần ghi đè cả hai phương pháp không? – VorteXavier
Có, nó sẽ được gọi. Không cần phải ghi đè cả hai số –