2013-04-27 20 views
0

所以我的应用程序是这样的。我有一个列表视图,Categories。当用户点击某个类别时,会启动一个新活动Products。出现一些他可以购买的产品。在他选择他想要的内容后,他可以点击订单按钮,进入Checkout活动。 眼下,以便将数据从发送到ProductsOrder,我有一个parcelable类,并使用它像这样:在活动之间传递数据与可发布

Intent orderActivity = new Intent(Main.this, Order.class); 
orderActivity.putExtra("parcel", listOrdered); 

事情是,也许用户想从多个类别买东西。所以在他从第一类产品中选择后,他会回到Categories活动(他选择的产品需要保留),选择另一个类别,并从那里选择产品。

我的问题是:我可以使用上面的方法来做到这一点吗?或者我需要onAnctivityResult()和类似的东西?

+0

只是一点OT。为什么不使用数据库来跟踪选定的产品?它也会在应用程序关闭时持续存在。 – rciovati 2013-04-27 08:51:00

+0

永远不要这么想......我想用DB来记住以前的订单...... – Teshte 2013-04-27 09:30:29

回答

1

你应该组织你的代码如下:

在活动Categories,维持选择产品的列表,它应该是parcelable或序列化的,这是比较容易。

当您致电产品时,请将startActivityForResult打电话并将其传递给选定的产品类别和产品清单。当用户选择新产品时,请致电setResult,以便Categories活动可通过覆盖onActivityResult获取所选产品的新列表。

还有其他选择,更先进和更面向对象,但它们不像这种方法那么标准,并且更先进一些。但是,如果您很好奇,可以查看注射框架(如RoboGuiceDagger),以便在显示的所有活动中共享ProductManager实例。

+0

对于'ProductManager'解决方案来说+1,非常优雅。 – rciovati 2013-04-27 08:46:05

+0

嗨RCI,我同意,但提问者似乎开始了,所以作为第一步,在处理更先进的技术之前掌握android框架的基础将更加重要。 – Snicolas 2013-04-27 08:48:02

+1

是的,没错。而且,如果不使用任何DI框架,普通的单身人士也可以做到这一点。 – rciovati 2013-04-27 08:52:42