我将从解析XML获得的字符串存储在ArrayList中。有很多这样的数组列表。如何使这些ArrayLists可用于应用程序中的所有活动,以便我不需要使用意图将数组传递给活动。
答案 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在主线程上定义处理程序。