onSaveInstanceState 在屏幕旋转后未被调用
2022-09-01 16:34:17
我知道在SaveInstanceState上有很多问题,但我无法找到问题的答案。
我有一个扩展AppCompatActivity的活动;此活动使用 3 个片段,它有一个变量 'int currentStep' 来跟踪正在显示的片段。在 onSavedInstanceState 方法中,我将 currentStep 变量存储在捆绑包中,然后在 onCreate 方法中还原它。
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);
}
...
}
问题是,当屏幕输入更改时,onSavedInstanceState不会被调用,根据Google文档,它应该被调用。消息“----------------保存状态”不会显示在控制台中。但是,在屏幕旋转后,onCreate 方法中的捆绑包保存的InstanceState不为空,但它没有int'currentStep'。
我尝试了很多事情:将AppCompatActivity更改为ActionBarActivity,将super.onSavedInstanceState的调用移动到不同的位置,尝试存储其他变量;但无论我做什么,该方法都不会执行。
另外,我的清单中没有android:configChanges。
我的应用程序是针对 sdk 版本 22 编译的,buildToolsVersion 22.0.1