2014-02-05 123 views
0

我正在嘗試一些片段。我有一個按鈕的片段,當我點擊該按鈕時,我切換到另一個片段。現在,當我按下後退按鈕時,我會返回到第一個很好的片段。現在,當我再次點擊那個按鈕時,一個新的片段被啓動。所以我總是開始一個新的片段。我認爲那不是它需要完成的方式。有沒有更好的方法來恢復已經創建的片段?片段正確的方式

我的代碼:

public static class PlaceholderFragment extends Fragment{ 

    public PlaceholderFragment() { 
    } 

    @Override 
    public View onCreateView(LayoutInflater inflater, ViewGroup container, 
      Bundle savedInstanceState) { 
     View rootView = inflater.inflate(R.layout.fragment_main, container, false); 
     Button test = (Button)rootView.findViewById(R.id.button); 
     test.setOnClickListener(new OnClickListener() 
     { 
      @Override 
      public void onClick(View view) 
      { 
       Log.d("Test", "Button clicked."); 
       TestFrag newFragment = new TestFrag(); 

       FragmentTransaction transaction = getFragmentManager().beginTransaction(); 

       transaction.replace(R.id.container, newFragment); 
       transaction.addToBackStack(null); 
       transaction.commit(); 
      } 
     }); 
     return rootView; 
    } 
} 

public static class TestFrag extends Fragment { 

    public TestFrag() { 
     Log.d("Test","New fragment"); 
    } 

    @Override 
    public View onCreateView(LayoutInflater inflater, ViewGroup container, 
          Bundle savedInstanceState) { 
     View rootView = inflater.inflate(R.layout.fragment_main2, container, false); 
     return rootView; 
    } 
} 
+0

嘗試添加您的第一個片段而不是替換它 –

回答

0

當您使用的片段交易,你可以指定一個標記爲片段

fragmentTransaction.add(R.id.main_fragment,newFragment,fragTag); fragmentTransaction.commit();

然後以後就可以從fragmentManager

newFragment = fragMan.findFragmentByTag(fragTag)找到由標籤片段; 如果newFragment然後爲空則應該創建片段,因爲它不是由標籤

0

由於發現的Joakim:

fragmentTransaction.add(R.id.main_fragment, newFragment, fragTag); fragmentTransaction.commit(); 

後來的後來,你可以從fragmentManager

newFragment = fragMan.findFragmentByTag(fragTag);找到標籤片段如果newFragment的值爲null,則應該創建Fragment,因爲它沒有被標籤找到。如果標籤不爲空,您可以添加並提交新標籤。