android - onSaveInstanceState 不起作用

标签 android android-activity

当屏幕旋转时...... Toast 什么都不打印!

public class MainActivity extends AppCompatActivity {

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

@Override
protected void onRestoreInstanceState(Bundle savedInstanceState) {
    super.onRestoreInstanceState(savedInstanceState);
    String a  = savedInstanceState.getString("hello");
    Toast.makeText(MainActivity.this, a, Toast.LENGTH_SHORT).show();

}

@Override
public void onSaveInstanceState(Bundle outState, PersistableBundle outPersistentState) {
    super.onSaveInstanceState(outState, outPersistentState);
    String a = "WTF";
    outState.putString("hello",a);
}

我很好地声明了一切,这个简单的代码中的无赖在哪里!?

最佳答案

我认为自从 Android OS 团队重载了 onSaveInstanceState() 方法以来,您已经陷入了许多开发人员常犯的陷阱。

您正在覆盖错误的方法。你想要的是:

@Override
public void onSaveInstanceState(Bundle outState) {
    super.onSaveInstanceState(outState);
    String a = "WTF";
    outState.putString("hello",a);
}

就个人而言,我认为 Craig Mautner 应该在每次 Android 开发人员犯此错误时被迫捐款 - source

关于android - onSaveInstanceState 不起作用,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/37218859/

相关文章:

android - SurfaceTexture updateTexImage to shared 2 EGLContexts - Android 4.4 上的问题

java - 在android中的 Activity 后面运行一个线程

Android - 启动 Intent 问题

Android Studio,在新 Activity 中显示完整的 WebView

Android:从 'recent applications' 开始应用程序以 Intent 中使用的最后一组额外内容启动它

php - mysql - 获取用户的最后 Activity

android - 如何在 Android 应用程序中管理多个 Activity 堆栈,就像在 iOS 上使用 UITabBarController 中的多个 UINavigationControllers 一样?

android - 当父 View 未填满整个屏幕时, fragment 中的中心项目

android - 在 Jetpack Compose 中可视化组件树

android - 为什么Service中使用onStartCommand()?