2016-02-27 32 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) –