![](/img/trans.png)
[英]How to go back to the previous activity by pressing the back button with some data?
[英]Restarting the previous activity by pressing back button
我正在制作一个应用程序,其中有一个“ MainActivity.class”,其中包含一个“编辑配置文件”按钮,该按钮会导致另一个活动,称为“ Editprofile.class”。 它(MainActivity)也有一个TextView,它显示一个字符串(名称)。
Editprofile.class接受来自用户的字符串,并在按下“添加”按钮后,新的String被更新到数据库,从而替换了先前的字符串。 现在,更新后,用户通过后退按钮返回MainActivity时,我希望TextView显示新的更新后的String; 为此,我必须重新启动MainActivity。
当用户在“编辑配置文件”活动期间按下“编辑配置文件”按钮并在用户按下“后退”按钮时,通过使用finish()函数已经实现了这一点,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格式发布吗?
但我也想“刷新” MainActivity,以便新的名称在返回时显示。
这类事情有onResume()
方法。
我建议使用startActivityForResult()
并在onActivityResult()
更新MainActivity
。
(无需检查onResume()
的更新,因为除了从Editprofile
返回之外, 许多其他实例还调用了此方法。)
@Mattias答案的替代方法是使用startActivityForResult(...)
启动Editprofile
。 然后,该活动可以返回一个结果,该结果指示用户是否实际上已经编辑了他/她的个人资料,您可以在MainActivity
onActivityResult(...)
中捕获该个人资料。 仅当配置文件更改时,才需要更新TextView
。
可能需要花费几行额外的编码,但比每次onResume()
命中时更新都要有效。 在我看来,它也更干净一些,尽管就性能而言可能并不重要。
例如,请查看Android开发人员网站上的文档 。
只是:
edit_profile()
中的finish()
调用 onBackPressed()
方法 由于您无需重新启动活动(现在将恢复该活动:更快,更好,更容易且按预期进行)。 在onResume()
而不是onCreate()
更新TextView。
不要在程序中的任何地方使用/覆盖onBackPressed()
只需在父活动(例如MainActivity
和EditProfile
添加以下方法
@Override
protected void onActivityResult(int requestCode, int resultCode, Intent data) {
super.onActivityResult(requestCode, resultCode, data);
}
使用onClick方法启动Activity
startActivityForResult(intentName, 0);
您使用/覆盖onStop()方法
@Override
protected void onStop()
{
super.onStop();
}
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.