【发布时间】:2012-12-21 19:52:11
【问题描述】:
我正在制作一个应用程序,其中有一个“MainActivity.class”,该应用程序有一个“编辑配置文件”按钮,该按钮通向另一个活动,称为“Editprofile.class”。它(MainActivity)还有一个 TextView,它显示一个字符串(名称)。
Editprofile.class 接受来自用户的字符串,并在按下按钮“添加”时,将新字符串更新到数据库,替换之前的字符串。现在,当用户在更新后通过后退按钮返回 MainActivity 时,我希望 TextView 显示新更新的字符串;为此我必须重新启动 MainActivity。
当用户按下“编辑配置文件”按钮时,我通过使用 finish() 函数实现了这一点,并且当用户在 Editprofile 活动期间按下后退按钮时,MainActivity 通过 onBackPress() 方法重新启动。
意图启动“Editprofile.class”的代码:
public void edit_profile(View view) { Intent intent = new Intent(this, Editprofile.class) startActivity(intent) finish(); }
返回“MainActivity”的代码:
@Override public void onBackPressed() { finish(); startActivity(new Intent(this, MainActivity.class)); }
我已经设法得到我想要的结果,但如果有人能告诉我这是否是最有效的方法,我将不胜感激。
我应该以 Q/A 格式发布吗?
【问题讨论】:
-
根据我的经验,您无需编写任何代码即可使“后退”按钮返回上一个活动。这是默认行为。
-
@Code-Guru 是的,我知道这一点。但我也想“刷新” MainActivity 以便在返回时显示新更新的名称;否则在更新数据库时仍会显示以前的名称。
-
“新更新的名称”从何而来?据我了解,在 Activity 重新启动时更新 Activity 的首选解决方案是使用
onResume()回调,而不是杀死 Activity 并尝试创建一个新的。 -
其实我强烈建议你研究一下Activity的生命周期。我认为这将帮助您以安全地使用底层平台的方式解决您的问题。
-
@Code-Guru 你是对的。我应该使用 onResume()。谢谢! “新更新的名称”来自我之前创建的 SQLite 数据库。