我正在使用Android Studio构建Android应用。 假设我有Activity1和Activity2。 Activity2有3个片段(3个标签)。 我设法通过使用片段适配器将数据从Activity1传递到Activity2,然后从Activity2传递到它的片段。
1) 我想做相反的事情:从所有3个片段中收集数据并将其传递给它们所在的活动(Activity2),然后将数据从Activity2传递回Activity1。
我已经实现了一个将数据从一个片段传递到Activity2的接口,但是我如何(以及何时)将所有3个片段中的数据传递给Activity2? 我写的方法将一个对象从片段发送到Activity2。但是Activity2中的方法只获得一个对象...... 或者也许有一种方法可以将数据从片段发送到Activity2 Fragment Adapter? (这可能是我认为最好的......)
2) 将数据从Activity2传递回Activity1的最佳方法是覆盖“onBackPressed”并使用startActivityForResult和setResult吗? (除了ActionBar“后退按钮”之外,我没有按钮来执行此操作。)
谢谢!
答案 0 :(得分:1)
1)您可以使用以下3种方法创建一个界面:setResult1()
,setResult2()
和setResult3()
,并使您的Activity实现此界面,以便它可以收集3个片段的结果为他们有空的时候。一旦结果发生变化,片段就应该在这个界面中调用它们自己的方法,并且在恢复之后(如果重新创建了Activity,就像你改变方向一样)。
2) Activity2 将结果发送回 Activity1 ,最好的方法是从 Activity1 >启动 Activity2 strong> startActivityForResult()
。然后,每次 Activity2 收集新结果时,都应调用setResult(int resultCode, Intent Data)
。您可以多次调用它来替换以前的结果。如果您立即设置结果,则无需覆盖onBackPressed()
。
答案 1 :(得分:1)
我的建议是创建一个用于存储和传递数据的新类,这个类可以被任何活动或片段访问。这个类必须是单例,所以相同的数据由不同的活动和片段共享。
qr.UserId = User.Identity.GetUserId();
您可以使用它来保存或从任何活动或片段中获取数据: DataCache.getInstance(上下文).getData()/ SAVEDATA(数据)
在这种情况下,数据存储在内存中,您可以重写集合并获取函数以将数据保存到您想要的任何位置,例如SDCARD或数据库。
答案 2 :(得分:0)
您可以将来自所有3个片段的数据存储到共享首选项中,并在活动1中获取该数据。您应该在检索后清除共享首选项中的数据。