2016-11-07 4 views
-2

У меня есть activity A и activity B. И в моем файле манифеста я установил его режим запуска как единую задачу, чтобы поддерживать только один экземпляр каждого действия. В обоих действиях я использую три фрагмента с ViewPager. Теперь вот проблема, когда я заполняю все поля всех фрагментов activity A, а затем переходим к activity B, после чего данные, заполненные фрагментами activity A, удаляются. Итак, как мы можем восстановить состояние фрагментов?Как восстановить состояние фрагмента в представлении пейджера, если фрагмент не добавляется в задний стек?

//Global Declaration 
Intent i =null; 

//method i used in fragment to save the value of fields. 

@Override 
     public void onStop() { 
      super.onStop(); 
       i.putExtra("customerId", _customerId); 
       i.putExtra("panCardName", _panCardName); 
       i.putExtra("panCardAcknowledgementNmber", _panCardAcknowledgementNmber); 
       i.putExtra("natureOfBusiness", _natureOfBusiness); 
       i.putExtra("annualTurnover", _annualTurnover); 
       i.putExtra("networth", _networth); 
       i.putExtra("occupation", _occupation); 
       i.putExtra("date", _date); 
} 

//method in fragment, where i retrieve the saved values. 

public void onResume() { 
     super.onResume(); 
     i = getActivity().getIntent(); 
     if(i != null) { 
      _customerId = i.getStringExtra("customerId"); 
      _panCardName = i.getStringExtra("panCardName"); 
      _panCardAcknowledgementNmber = i.getStringExtra("panCardAcknowledgementNmber"); 
      _natureOfBusiness = i.getStringExtra("natureOfBusiness"); 
      _annualTurnover = i.getStringExtra("annualTurnover"); 
      _networth = i.getStringExtra("networth"); 

_occupation = i.getStringExtra("occupation"); 
      _date = i.getStringExtra("date"); 
     } 
+0

Пожалуйста, не используйте так много ** жирных ** и * курсив * в своем вопросе, поскольку их трудно читать и, как правило, раздражает многих постоянных посетителей здесь. Кроме того, вы вообще не указали код; мы предпочитаем [mcve], чтобы мы могли попытаться воспроизвести вашу проблему. –

+0

в порядке. Простите за это. Теперь я обновил свой ответ. onResume() всегда возвращает null. –

+0

@ KenY-N Пожалуйста, помогите :( –

ответ

0

Прежде всего, вы должны использовать

int counter = 0; 
@Override 
public void onSaveInstanceState(Bundle outState) { 
    super.onSaveInstanceState(outState); 
    outState.putInt("value",counter); 
} 

для сохранения значения в фрагменте,

и сохранить данные как ниже код,

@Override 
public void onCreate(Bundle savedInstanceState) { 
    super.onCreate(savedInstanceState); 
    setRetainInstance(true);   
} 

и onCreateView () метод

@Nullable 
    @Override 
    public View onCreateView(LayoutInflater inflater, ViewGroup container, Bundle savedInstanceState) { 
    if (savedInstanceState != null) { 
      int count = savedInstanceState.getInt("value"); 
      Toast.makeText(this, String.valueOf(count) , Toast.LENGTH_LONG).show(); 
    } 
} 
+0

Я не могу использовать setRetainInstance (true), потому что onCreate() вызывает только во время создания активности. И моя активность создается только один раз. –

Смежные вопросы