2012-06-15 47 views
0

我的应用程序在包含ListView的活动A中启动。如果用户点击“添加”按钮并转到活动B,则ListView可以添加项目。正确关闭/完成Android中的活动的方法

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

从B到A之后,我有一个finish()方法 - 但不是相反。

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

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

回答

3

通过使用startActivityForResult()开始活动B并填写表单后完成活动B.

编辑

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

希望这个解释可以帮助你。

+0

谢谢,在“startActivityForResult(intent,int)”的第二个值中,我将如何使用int? – KickingLettuce

+0

@KickingLettuce我已经编辑了我的答案,并解释了'startActivityForResult(intent,int)'。 –

+0

startActivityForResult的第二个参数是一个请求标识符。当它被调用时,它会传递给onActivityResult,所以你知道什么活动传递了一个结果(在一个活动可以从许多不同的活动中获得结果的情况下)。在你的情况下,只在一个位置调用startActivityForResult,只需使用1即可。 – Xono