2017-01-23 55 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

当然,谢谢你 –