gpt4 book ai didi

java - Android App 在 savedInstanceState 实现后停止

转载 作者:搜寻专家 更新时间:2023-11-01 09:38:57 26 4
gpt4 key购买 nike

编辑:添加onPause()onResume() 后,应用程序不再崩溃;但是,该实例仍未保存,我丢失了放在 EditText 中的文本。我推测我应该使用 onPause()onStop() 保存实例,并使用 onResume()(或也许一起使用这个 onSaveInstanceState(), onRestoreInstanceState())——我现在正在阅读如何使用这三种方法,如果有任何指点,我将不胜感激。

我目前正在编写一个只有四个(也许五个) Activity 的简单 Android 应用程序。该应用程序的功能是为大学学生提供帮助和建议,他们需要自己添加类(class)(在 activity_main_page 页面上显示为按钮) - 当按下按钮时,需要学生到建议页面。

我目前正在做的是类(class)添加页面:activity_add_course。我正在尝试添加一种方法来在 Activity 暂停/停止时(例如,当用户按下后退按钮或主页按钮),并在用户返回页面时调用它。

在我尝试将实例状态保存添加到应用程序之前,应用程序运行良好(使用虚拟 Intent 连接 Activity - 我没有添加 SQL 数据库来实际使应用程序运行)。现在我已经添加了实例状态保存和调用,当我点击后退按钮时应用程序停止运行,我不知道为什么?或者如何解决? - 这个问题已经解决了。感谢@peresisUser

这是后退按钮的代码

btBk.setOnClickListener(new View.OnClickListener() {
@Override
public void onClick(View v) {
Intent New = new Intent(AddCourse.this, MainPage.class);
startActivity(New);
}
});
}

这些是我用于保存和恢复实例的代码。

public void onSaveInstanceState(Bundle savedInstanceState) {
super.onSaveInstanceState(savedInstanceState);
//Save instance state
savedInstanceState.putString("edC1", edCourse1.getText()+"");
savedInstanceState.putString("edC2", edCourse2.getText()+"");
savedInstanceState.putString("edC3", edCourse3.getText()+"");
savedInstanceState.putString("edC4", edCourse4.getText()+"");


}
public void onRestoreInstanceState(Bundle savedInstanceState) {
super.onRestoreInstanceState(savedInstanceState);
//Restore instance state
String edC1 = savedInstanceState.getString("edC1");
edCourse1.setText(edC1+"");
String edC2 = savedInstanceState.getString("edC2");
edCourse2.setText(edC2+"");
String edC3 = savedInstanceState.getString("edC3");
edCourse3.setText(edC3+"");
String edC4 = savedInstanceState.getString("edC4");
edCourse4.setText(edC4+"");

}

edCourse1-4 都是不同的EditTexts

据我了解,onSaveInstanceState() 会将 edC1 保存为来自 edCourse1.getText()+"" 的文本,依此类推, 然后 onRestoreInstanceState() 会将 edC1 中的 String 恢复为 edCourse1 等等。

在这方面遇到麻烦,我不知道如何解决我的下一个问题,它必须保存页面 activity_main_page 上按钮的状态。在这里,我将有 10 个按钮,它们一开始是不可见且无名称的,其中 activity_add_course 将为按钮添加一个名称并使其可见。我推测我会遇到的问题是:当应用程序重新启动时,所有按钮都会变得不可见。

最佳答案

在我看来,您应该只在 onPause() 中添加 super 调用,这可能已在您的代码中删除。堆栈跟踪的第一行:android.util.SuperNotCalledException: Activity {com.example.user.icecres/com.example.user.icecres.AddCourse} 没有调用 super.onPause()

如果有帮助,请告诉我。

关于java - Android App 在 savedInstanceState 实现后停止,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/41085195/

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