2015-12-02 23 views
0

我已經欠了很多功勞給SO的用戶,讓我走得這麼遠,但是在開發者頁面閱讀6個多小時之後,我仍然無法使它在Android模擬器上工作。替換按鈕上的一個片段按

我只是想換一個片段換另一個。點擊按鈕時發生的情況是初始片段快速動畫,但保持放置狀態。它只動畫一次,隨後的按鈕不會產生後續動畫。我不知道是不是因爲某些原因,onCreate代碼以某種方式再次快速運行,以便快速替換「click frag」上的初始碎片,或者如果問題出在replaceFrag方法本身上,或者某些內容執行不正確。 如果有人看到這個問題,並指出它的位置(沒有詳細的解釋),我會非常感激。當我得到它的工作,我會獎勵這個人綠色檢查,並張貼解決方案以及。

這裏是Main_Activity:

public class MainActivity extends FragmentActivity { 

     @Override 
     protected void onCreate(Bundle savedInstanceState) { 
      super.onCreate(savedInstanceState); 
      setContentView(R.layout.activity_main); 

      if (findViewById(R.id.fragment_container) != null) { 
       if (savedInstanceState != null) { 
        return; 
       } 
      } 

      // Add the fragment to'fragment_container' 
      FragmentManager fm = getSupportFragmentManager(); 
      FragmentTransaction ft = fm.beginTransaction(); 

      Menu_Fragment fragment = new Menu_Fragment(); 
      fragment.setArguments(getIntent().getExtras()); 

      ft.add(R.id.fragment_container, fragment, "INITIAL_FRAG"); 
      ft.commit(); 
     } 

     public void replaceFrag(View v) { 

      Fragment fragment = new Click_Fragment(); //Creates a new Click_Fragment when button selected 
      Fragment savedFragment = null;    // creates an instance of savedFragment 
      if (fragment != null) { //check to see if fragment was instantiated, always true 

       savedFragment = getSupportFragmentManager().findFragmentByTag("FB"); 
       FragmentTransaction ft = getSupportFragmentManager().beginTransaction(); 

       if (savedFragment != null) {//searches to see if the Click_Fragment has already been created once 
        ft.replace(R.id.fragment_container, savedFragment, "FB"); 
       } else { 
        ft.replace(R.id.fragment_container, fragment, "FB"); 
       } 

       ft.addToBackStack(null); 
       ft.setTransition(FragmentTransaction.TRANSIT_FRAGMENT_OPEN); 
       ft.commit(); 
      } 
     } 
    } 

的按鈕,它有它的XML安置在menu_fragment佈局,具有屬性: android:onClick="replaceFrag"

編輯:出現在SDK日誌時,此錯誤按鈕被按下: mycompany.fragment_test W/OpenGLRenderer: Failed to set EGL_SWAP_BEHAVIOR on surface 0xab70a680, error=EGL_SUCCESS

回答

-1

你能解釋爲什麼你有這兩行replaceFrag()

ft.addToBackStack(null); 
    ft.setTransition(FragmentTransaction.TRANSIT_FRAGMENT_OPEN); 

我推薦通過調試或使用日誌語句來查看發生了什麼。你甚至可以打印replaceFrag()的後臺堆棧。另外,我不會在XML中設置replaceFrag()

+0

如果我沒有記錯,addToBackStack允許用戶通過按下android設備上的後退按鈕來訪問前一個片段。 setTransition()動畫片段的替換。 – RM3

+0

你會在哪裏設置replaceFrag?作爲onClickListener? – RM3

相關問題