在活动和片段之间共享数据

时间:2013-03-28 10:48:00

标签: android

我正在开发一个基于列表和地图的Android应用程序。

当加载列表时,我从网络服务获取数据,它与我将用于在地图中添加标记的数据相同。

如何避免再次加载数据?

感谢。

编辑:我忘了说我正在使用带有两个片段的ABS选项卡控件,一个用于列表,另一个用于地图。我想将数据保存在选项卡控件活动中并与片段共享。

有没有办法从片段中的父活动中获取数据? 而对于大量数据,最好将内容写入sql?

3 个答案:

答案 0 :(得分:1)

您可以将数据作为Intent extra传递,并在另一个Activity中检索它:

Bundle extras = getIntent().getExtras(); 
String data;

if (extras != null) {
    data = extras.getString("key");
    //use your data
}

如果您的数据是某种无法通过Intent extras传递的对象,您可以创建一个扩展Application类的Singleton。

答案 1 :(得分:0)

首先,你的所有模型类应该是实现Serializable,所以你可以将整个模型发送到另一个带有商店数据的活动。

然后在第一次活动

之后

intent.putExtra(“model”,commanModelList);

然后在第二个活动中获得此意图

commanModelList = (ArrayList<CommanModel>) getIntent().getSerializableExtra("model");

将ur commanModelList与商店数据一起使用。

答案 2 :(得分:0)

您可以添加某些类型的ArrayLists(Integer,String ...)作为intent extra(例如Intent类的public Intent putIntegerArrayListExtra (String name, ArrayList<Integer> value))。

如果这些不合适,您可以使用getter / setter对Application类进行子类化并将List存储在其中。您的应用程序对象可以使用getApplication()从所有活动中获取(您可以将其转换为您自己的应用程序子类型)。