【问题标题】:fragment back to the end , the screen is white [duplicate]片段回到最后,屏幕是白色的[重复]
【发布时间】:2017-01-23 03:10:40
【问题描述】:

我有一个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 是白色的

我尝试添加

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

它不工作。当我将Fragment 回调到最后时,如何避免出现此白屏?任何帮助都会很棒!

【问题讨论】:

  • 请出示您的xml文件
  • 我找到了解决方案,谢谢。

标签: android


【解决方案1】:

我采纳了@ReazMushed 的建议,改成这样:

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

而且白屏问题消失了!

【讨论】:

    【解决方案2】:

    根据您的问题,我的理解是,您有一组Fragment 一个接一个启动,当您按下后退按钮时,它们一个接一个消失。当第一个Fragment 到达并再次单击返回按钮时,它会显示一个白屏。

    如果我是正确的,您可能需要跟踪第一个 Fragment 是否到达,然后完成活动。

    在您的MainActivity 中实现onBackPressed 函数。你可以考虑做这样的事情。

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

    【讨论】:

    • 是的,你是对的,谢谢你的帮助,但是当第一个 Fragment 到达时它仍然显示白屏
    • 我从你的建议中找到了方法,我改变了这样 'if(getSupportFragmentManager().getBackStackEntryCount() ==1) { finish(); }' ,我现在避免了白屏问题,虽然我不确定这是正确的解决方案。
    猜你喜欢
    • 2015-04-12
    • 1970-01-01
    • 1970-01-01
    • 2012-02-20
    • 1970-01-01
    • 2012-03-11
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多