问题描述
我在保存包时记录了它,所以信息正在被保存,但是 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 (将#修改为@)