2014-09-01 4 views
0

У меня есть список, содержащий Деятельность-A, каждый Деятельность-A имеет в себе различные значения. Однако все они имеют один и тот же класс, который является Деятельность-A. Когда пользователь переходит к списку из активности, я сохраняю это действие в ArrayList и извлекаю его и запускаю его как намерение, когда пользователь снова нажимает на ту же активность в списке. Однако это заставляет его воссоздавать. Я хочу, чтобы он был возобновлен из состояния, которое оно хранилось в ArrayList. Как я могу это сделать?Сохранить и восстановить ФрагментАктивности в ArrayList

Редактировать: Я слышал о FragmentManager и о том, как он легко хранит и может извлекать фрагменты. Однако есть ли что-то вроде FragmentManager для действий? Является ли ActivityManager как FragmentManager?

Edit: Для того, чтобы прояснить мой вопрос немного больше, я пытаюсь:

  • Спасите FragmentActivity к ArrayList, когда он получает остановился
  • Возобновить его из состояния, прежде чем он был остановлен.

Однако, когда я перехожу к FragmentActivity, хранящемуся в ArrayList, 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

вы можете быть более конкретным с вашим запросом и поделиться какой-то код? –

+0

Хорошо, я сделал это! :) – sm123

ответ

0

Вы должны обрешетке с Static ArrayList объект.

Таким образом, каждый раз, когда вы пришли на эту деятельность, вы не создать новый объект ArrayList

+0

ArrayList static ... –

0

Вы можете использовать глобальную переменную, но использование памяти приложения будет большим. Где вы извлекаете данные? Веб-служба или клиентская база SQLite? Если вы извлекаете данные из SQLite, выбирайте время так быстро. Если вы извлекаете из веб-службы, вы должны сохранить ее в SQLite. Я не знаю, ясно ваш вопрос. просто дайте идею для вас. Надеюсь на помощь.

Global Variable Usage

+0

Спасибо, но я не совсем уверен, что понимаю, что вы говорите. Если вы имеете в виду, где хранятся действия, они хранятся в ArrayList. То, что он содержит, не может быть помещено в SQLite. – sm123

+0

вы можете попробовать с глобальной переменной. В состоянии активности вы хотите сохранить список массивов? Я думаю, что этого не может быть. вы можете прочитать жизненный цикл активности .http: //developer.android.com/reference/android/app/Activity.html –

+0

Я не совсем понимаю, что вы подразумеваете под глобальной переменной. Класс, содержащий ArrayList, является статическим, поэтому его не хватает. Когда я перехожу к ListView, активность вызывает onStop(), но когда я возвращаюсь к нему с помощью намерения, он снова вызываетCreate(), а не onStart(), что, я думаю, может быть связано с использованием Intent. startActivity (i) – sm123