保存并恢复ArrayList中的片段活动性

问题描述:

我有一个包含的列表活动-A,每个活动-A里面有不同的值。然而他们都有相同的班级,这是Activity-A。当用户从活动导航回列表时,我将该活动存储在ArrayList中,并在用户再次单击列表中的同一活动时检索并将其作为意图启动。但是,这会导致它重新创建。我希望它从存储在ArrayList中的状态恢复。我怎样才能做到这一点?保存并恢复ArrayList中的片段活动性

编辑:我听说过FragmentManager,它如何轻松存储和检索片段。然而,有没有像FragmentManager的活动? ActivityManager是否像FragmentManager?

编辑:当它被从国家停止

  • 恢复它,它停止前

    • 保存FragmentActivity到一个ArrayList:要澄清我的问题有点多,我想。

    但是,当我导航到存储在ArrayList中的FragmentActivity时,FragmentActivity从头开始重新创建,而不是从其以前的状态恢复。

    我明白我必须做一些事情来保存它的状态。但是,我怀疑我可以保存所有内容;里面有很多碎片。

    下面的代码:

    listItem.setOnClickListener(new View.OnClickListener() { 
    
          @Override 
          public void onClick(View v) { 
           showActivity(id); 
          } 
    
    
    private void showActivity(int id) { 
         ActivityA activityA = StaticLab.get(getActivity()) 
           .getActivityA(id); // getActivityA simply returns the ActivityA from the ArrayList which contains the specified id 
         if (activityA == null) { 
          createNewActivityA() 
         } 
         Intent i = new Intent(getActivity(), activityA.getClass()); 
         startActivity(i); 
    
        } 
    
  • +0

    你能更具体的查询和分享一些代码吗? – 2014-09-01 09:19:32

    +0

    好的,我做到了! :) – sm123 2014-09-01 10:25:55

    你需要一个箱子Static ArrayList对象。

    所以每次你来对活动时间,你不创建的ArrayList

    +0

    ArrayList static ... – 2014-09-01 10:07:17

    的新对象,您可以使用全局变量,但你的应用程序的内存使用量会很大。你在哪里检索数据? Web服务或客户端数据库SQLite?如果你从SQLite检索数据,检索时间如此之快。如果您从Web Service检索,则应保存到SQLite。我不清楚你的问题。只是给你想法。希望获得帮助。

    Global Variable Usage

    +0

    谢谢,但我不太清楚我明白你在说什么。如果您指的是存储活动的位置,则它们存储在ArrayList中。它包含的东西不能放入SQLite中。 – sm123 2014-09-01 10:22:44

    +0

    您可以尝试使用全局变量。在活动状态下你想存储数组列表?我认为这不可能。你可以阅读活动生命周期.http://developer.android.com/reference/android/app/Activity.html – 2014-09-01 10:35:29

    +0

    我不太清楚你使用全局变量是什么意思。包含ArrayList的类是静态的,所以它没有多个副本。当我导航到ListView时,活动调用onStop(),但是当我通过意图导航回到它时,它会再次调用onCreate(),而不是onStart(),我认为这可能是由于使用Intent。 startActivity(i) – sm123 2014-09-01 10:39:55