2016-11-07 87 views
-2

我有一個activity Aactivity 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(真),因爲的onCreate()僅在創建活動時調用。並創建唯一一次我的活動。 –

相關問題