gpt4 book ai didi

java - 如何使用onSavedInstance?

转载 作者:行者123 更新时间:2023-12-01 19:07:59 25 4
gpt4 key购买 nike

一个简单的问题:为什么我的 onSavedInstance 不起作用?我想保存用户 Activity 的最后状态(当前锻炼 session 等),但由于某些特殊原因,当我按主页概述时,它总是让我回到mainActivity按钮,然后我返回到应用程序。它应该返回我上次保存的 Activity 状态,但似乎有问题。我已经为这个问题苦苦挣扎了两周。我搜索了整个论坛,但仍然找不到答案。希望有人能帮忙:

@Override
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.activity_workout);

if (savedInstanceState != null) {
// What should I call here?

} else {
// And here?
}
}


@Override
public void onRestoreInstanceState(Bundle savedInstanceState) {
super.onRestoreInstanceState(savedInstanceState);
}


@Override
public void onSaveInstanceState(Bundle savedInstanceState) {
super.onSaveInstanceState(savedInstanceState);
}

最佳答案

onSaveInstanceState(Bundle savingInstanceState) 在用户离开您的应用程序时调用。它提供了一个 Bundle 对象,您可以将要保存为键值对的值传递给该对象。

static final String WORKOUT_STATE = "state";


@Override
public void onSaveInstanceState(Bundle savedInstanceState) {

// Save the user's current workout state
savedInstanceState.putInt(WORKOUT_STATE, currentState);


super.onSaveInstanceState(savedInstanceState);
}

重新创建 Activity 时,您可以通过两个选项恢复当前状态。可以在 onCreate(Bundle savingInstanceState) 方法或 onRestoreInstanceState(Bundle savingInstanceState) 中完成。如果您应该在 onCreate 中执行此操作,则应检查 savingInstanceState 是否不为 null。

如果savedInstanceState不为空,则正在重新创建 Activity ,这就是您提取值的位置。

@Override
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);

if (savedInstanceState != null) {
currentState = savedInstanceState.getInt(WORKOUT_STATE);

} else {

// Initialize members with default values for a new instance
}

}

您可以选择使用 onRestoreInstanceState(Bundle savingInstanceState) 方法,而不是在 onCreate 方法中提取值。如果有状态需要恢复,则调用此方法,因此您无需检查 savingInstanceState 是否为 null。

public void onRestoreInstanceState(Bundle savedInstanceState) {

super.onRestoreInstanceState(savedInstanceState);

// Restore state
currentScore = savedInstanceState.getInt(WORKOUT_STATE);

}

您可以在此处阅读有关保存 UI 状态的更多信息:https://developer.android.com/topic/libraries/architecture/saving-states.html

关于java - 如何使用onSavedInstance?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/59513803/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com