为什么 onCreate(Bundle savedInstanceState) 不访问 onSaveInstanceState() Bundle?

问题描述

我在保存包时记录了它,所以信息正在被保存,但是 onCreate 似乎没有访问包。

The Android Developer Site 声明:

“保存的实例状态包会在配置更改和进程死亡后持续存在,但受存储和速度限制...”

如果我错了,请纠正我,但这听起来不只是为了更改配置。

我想要做的就是使用 onSaveInstanceState() 包保存 UI 状态以传递给 onCreate() 方法。根据我的理解,它应该自动执行。

MainActivity的代码

public class MainActivity extends AppCompatActivity {

Intent secondActivity;
TextView textView;
String greeting = "Welcome Back World!";

private static final String GREETING_KEY = "Modified Greeting";

public void clickMe(View view) { startActivity(secondActivity); }

@Override
protected void onSaveInstanceState(@NonNull Bundle outState) {
    outState.putString(GREETING_KEY,greeting);
    super.onSaveInstanceState(outState);
    Log.i("Current Save Instance is",String.valueOf(outState));
}

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

    textView = findViewById(R.id.hello_world);

    if(savedInstanceState != null) { textView.setText(savedInstanceState.getString(GREETING_KEY)); }
    else { textView.setText("Hello!!"); }

    secondActivity = new Intent(getApplicationContext(),SecondActivity.class);

}

看起来很好(但显然不是),我不知道为什么。任何帮助将不胜感激。

我尝试使用 onRestoreInstanceState() 但效果相同,因为两种方法都使用相同的 Bundle(根据 Android 开发人员页面保存 UI 状态)

是不是因为我在 SecondActivity 中使用 startActivity() 来返回 MainActivity?

FloatingActionButton fab = findViewById(R.id.fab);
    fab.setonClickListener(new View.OnClickListener() {
        @Override
        public void onClick(View view) {
            startActivity(firstActivity);
        }
    });

我也在这个特定项目中使用 API 24 (Nougat);如果这是有用的信息。

解决方法

暂无找到可以解决该程序问题的有效方法,小编努力寻找整理中!

如果你已经找到好的解决方法,欢迎将解决方案带上本链接一起发送给小编。

小编邮箱:dio#foxmail.com (将#修改为@)