【问题标题】:Making data obtained in one activity available to all the activities使在一项活动中获得的数据可用于所有活动
【发布时间】:2011-03-14 05:34:54
【问题描述】:

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

【问题讨论】:

    标签: android


    【解决方案1】:

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

    Application 对象始终存在并且可以从您的所有活动中访问。我会在那里创建和存储这些全局 ArrayList。因为听起来你有一堆,所以可能有一个 ArrayList 的 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);
    
    }
    
    }
    

    【讨论】:

      【解决方案2】:

      扩展应用程序并让它保存您的数据。然后按照你的意图去做

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

      【讨论】:

        【解决方案3】:

        避免使用static 变量。它快速且无痛,但很快就会变得一团糟。

        早点查看question

        【讨论】:

          【解决方案4】:

          Android Application Framework FAQ 中有很多关于执行此操作的方法的文章。

          【讨论】:

            【解决方案5】:

            拥有“许多”列表并将它们设为静态并不是很有效。您可以使用我认为更高效的内容提供程序。

            【讨论】:

              【解决方案6】:

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

              这个stackoverflow帖子中有一个很好的使用说明

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

              android dev 写在这里

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

              您将在主线程上定义一个处理程序,其中包含您想要提供的 ArrayList。

              【讨论】:

                猜你喜欢
                • 1970-01-01
                • 1970-01-01
                • 1970-01-01
                • 1970-01-01
                • 1970-01-01
                • 2018-12-15
                • 1970-01-01
                • 1970-01-01
                • 2011-11-25
                相关资源
                最近更新 更多