2016-02-27 34 views
1

可以說我有2個片段,其中之一有一個文本輸入字段。Android替代片段不會刪除文本字段數據

我我的片段之間的主要活動與此開關:

public boolean onNavigationItemSelected(MenuItem item) { 
     // Handle navigation view item clicks here. 
     int id = item.getItemId(); 

     if (id == R.id.nav_new) { 
      FragmentTransaction fragmentTransaction = fragmentManager.beginTransaction(); 

      fragmentTransaction.replace(R.id.fragment_container, NewFragment(), fragment.getClass().getSimpleName()) 
         .addToBackStack(Integer.toString(id)) 
         .commit(); 
     } ... 

通知我使用framentTransactions replace方法

在有輸入框的當前片段,我在一些文本輸入。然後我使用導航欄切換到一個新的片段。我會期待,因爲我使用replace,舊的片段不再存在。

我瀏覽到新的片段很好,但是當我按下後退按鈕時,舊片段仍然有我在以前

類型爲什麼會發生這種情況使用replace當文本?我誤解了片段交易的工作原理嗎?

片段的onCreateView方法在我按下時不會再被調用,因此基本上重置片段?

+0

後棧將保留該片段,以便您可以點擊後退按鈕返回,嘗試不將其添加到後退堆棧,或在片段分離時手動清除文本字段。 – ootinii

回答

0

你要清楚你的手動textfied當你切換到另一個片段

由於片段取代僅更換片段,但仍舊片段有沒有任何變化。

+0

'onCreateView'在按下一個片段時仍然會被調用? – Simon

+1

'onCreateView()'只有在onAttach()和'onDestroyView()'後面纔會被調用,如果你仍然在同一個片段上。 [見這裏](http://stackoverflow.com/questions/24156926/oncreateview-method-gets-called-when-and-how-many-times-in-activity-life-cycle) –