使一个活动中获得的数据可用于所有活动

时间:2011-03-14 05:34:54

标签: android

我将从解析XML获得的字符串存储在ArrayList中。有很多这样的数组列表。如何使这些ArrayLists可用于应用程序中的所有活动,以便我不需要使用意图将数组传递给活动。

6 个答案:

答案 0 :(得分:2)

我认为静态字段不是你想要的。你没有提到这个xml的来源,但我假设你的意思是你的应用程序中包含的xml文件中指定的字符串数组。在这种情况下,您需要获取Resources对象的句柄,为此您需要一个Context。

Application对象始终存在,可以从所有活动中访问。我会在那里创建和存储这些全局ArrayLists。因为听起来你有很多它们,可以有一个ArrayLists Map和一个Application类中的一个函数,它接受你想要的ArrayList的名字,并从Map中返回相应的ArrayList。

public class MyApp extends Application {

private Map<String, ArrayList<String>> mLists=new HashMap<String, ArrayList<String>>();


public void addList(String key, ArrayList<String> list) {
      mLists.put(key,list);

}

public ArrayList<String> getList(String key) {

   return mLists.get(key);

}

}

答案 1 :(得分:1)

扩展应用程序并保留您的数据。然后在你的意图中你做

((MyApplication)getApplication()).getData();

答案 2 :(得分:1)

避免制作static个变量。它快速而轻松,但它很快就会变得混乱。

先检查question

答案 3 :(得分:0)

Android Application Framework FAQ中有很好的记录方式。

答案 4 :(得分:0)

拥有“众多”列表并将其设置为静态并不是非常有效。您可以使用我认为更有效的内容提供商。

答案 5 :(得分:0)

您最好定义一个在活动之间传递数据的处理程序。

使用的一个很好的解释是在这个stackoverflow帖子

How to access original activity's views from spawned background service

和android dev编写就在这里

http://developer.android.com/reference/android/os/Handler.html

您可以使用要使其可用的ArrayLists在主线程上定义处理程序。