我已經欠了很多功勞給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
如果我沒有記錯,addToBackStack允許用戶通過按下android設備上的後退按鈕來訪問前一個片段。 setTransition()動畫片段的替換。 – RM3
你會在哪裏設置replaceFrag?作爲onClickListener? – RM3