【问题标题】:Proper way to close/finish Activity in Android在 Android 中关闭/完成 Activity 的正确方法
【发布时间】:2012-06-15 15:54:40
【问题描述】:

我的应用在包含 ListView 的 Activity A 处启动。如果用户点击“添加”按钮并转到 Activity B,ListView 可以添加项目。

在活动 B 中,他们填写了一些表格并点击“确定”按钮,这会将他们带回活动 A,在该活动 A 中将新项目添加到 ListView。

从 B 到 A 后,我有一个 finish() 方法——但反之则不然。

所以如果你在添加三个项目后回击三次。它只会重复 ListView (Activity A) 3 次以上——少添加一项。

这样做的最佳方法是什么?我无法在“添加”按钮(从 A 到 B)上放置完成方法,因为如果您在 Activity B 中,它将关闭应用程序而不是将您带回 A ——这是我不想要的。也就是说,如果用户改变主意并且不想在 B 中通过点击“确定”来“添加新项目”。手动返回按钮是唯一的答案吗?

【问题讨论】:

    标签: android android-activity activity-finish


    【解决方案1】:

    使用startActivityForResult() 开始活动 B,并在填写表格后完成活动 B。

    编辑

    当你startActivityForResult()时,你传递了2个参数,即intentrequestcode。完成新活动(在您的情况下为活动 B)后,您使用函数 setResult(RESULT_OK) 表示活动 B 中的操作成功,然后调用 finish()。在调用finish() 之后,活动B 将返回到活动A 并调用onActivityResult(int requestCode, int resultCode, Intent data)。参数requestcode 有助于识别返回的特定活动/请求。

    希望这个解释对你有所帮助。

    【讨论】:

    • 谢谢,"startActivityForResult(intent, int)" 的第二个值中的 int 应该用什么?
    • @KickingLettuce 我已经用startActivityForResult(intent, int) 的解释编辑了我的答案。
    • startActivityForResult的第二个参数是请求标识符。当它被调用时,它会传递给 onActivityResult,因此您知道什么活动正在传回结果(在活动可以从许多不同活动中获取结果的情况下)。在您的情况下,仅在一个位置调用 startActivityForResult ,只需使用 1 就足够了。
    猜你喜欢
    • 2014-12-12
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2017-12-16
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多