2017-01-23 37 views
0

我有一個MainActivity,它下面有很多Fragment片段回到底,屏幕是白色的

我設定的回報機制transaction.addToBackStack(null);

的功能是這樣的:

public void switchFragment(Fragment fragment) { 
    FragmentManager manager = getSupportFragmentManager(); 
    FragmentTransaction transaction = manager.beginTransaction(); 
    transaction.replace(R.id.mainFrame, fragment, null); 
    transaction.addToBackStack(null); 
    transaction.commit(); 
} 

我的問題是,當我點擊後退按鈕到年底,FrameLayout是白色 white screen

我試圖添加

public boolean onKeyDown(int keyCode, KeyEvent event) { 
    if (keyCode == KeyEvent.KEYCODE_BACK) {  
     if (mainFrame==null) 
      return super.onKeyDown(keyCode, event); 
    } 
} 

這不起作用。當我將Fragment回撥到最後時,如何避免此白屏?任何幫助將是偉大的!

+0

請顯示您的xml文件 – scienticious

+0

我找到解決方案,謝謝。 –

回答

1

從你的問題我明白了,你有一套Fragment一個接一個地推出,當你按下後退按鈕,他們一個接一個地消失。當第一個Fragment到達並且您再次單擊後退按鈕時,它將顯示一個白色屏幕。

如果我是正確的,您可能需要跟蹤是否到達第一個Fragment,然後完成活動。

MainActivity中執行onBackPressed函數。你可能會考慮做這樣的事情。

@Override 
public void onBackPressed() { 
    if (getSupportFragmentManager().getBackStackEntryCount() > 0) 
     getSupportFragmentManager().popBackStack(); 
    else 
     finish(); // Finish the activity 
} 
+0

是的,你是正確的,謝謝你的幫助,但它仍然顯示一個白色的屏幕,當第一個片段達到 –

+0

我發現你的建議的方式,我改變像這樣'if(getSupportFragmentManager()。getBackStackEntryCount()== 1 ){ finish(); }',我現在避免了白屏問題,雖然我不確定它是否是正確的解決方案。 –

0

我把@ ReazMushed的建議,改變這樣的:

@Override 
public void onBackPressed() { 
    if (getSupportFragmentManager().getBackStackEntryCount() ==1) { 
     finish(); 
    } 
} 

,白色屏幕的問題已經一去不復返了!

+0

很高興知道幫助! –

+0

當然,謝謝你 –