Warning: file_get_contents(/data/phpspider/zhask/data//catemap/3/android/215.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Android 碎片回到最后,屏幕是白色的_Android - Fatal编程技术网

Android 碎片回到最后,屏幕是白色的

Android 碎片回到最后,屏幕是白色的,android,Android,我有一个main活动,它下面有很多片段 我设置了返回机制transaction.addToBackStack(null) 功能如下: public void switchFragment(Fragment fragment) { FragmentManager manager = getSupportFragmentManager(); FragmentTransaction transaction = manager.beginTransaction(); transa

我有一个
main活动
,它下面有很多
片段

我设置了返回机制
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();
}
@Override
public void onBackPressed() {
    if (getSupportFragmentManager().getBackStackEntryCount() ==1) {
        finish();
    }else{
        super.onBackPressed()
    }
}
我的问题是当我点击后退按钮到最后时,
FrameLayout
是白色的

我试图补充

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

它不起作用了。当我调用
片段
到最后时,如何避免出现白色屏幕?任何帮助都会很好

从你的问题中我了解到的是,你有一组
片段
,它一个接一个地启动,当你按下后退按钮时,它们一个接一个地消失。当第一个
片段到达并再次单击后退按钮时,它将显示一个白色屏幕

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

在您的
main活动中执行
onBackPressed
功能。你可以考虑这样做。

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

从你的问题中我了解到的是,你有一组
片段
,它一个接一个地启动,当你按下后退按钮时,它们一个接一个地消失。当第一个
片段到达并再次单击后退按钮时,它将显示一个白色屏幕

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

在您的
main活动中执行
onBackPressed
功能。你可以考虑这样做。

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

我接受了@ReazMushed的建议,改变如下:

public void switchFragment(Fragment fragment) {
    FragmentManager manager = getSupportFragmentManager();
    FragmentTransaction transaction = manager.beginTransaction();
    transaction.replace(R.id.mainFrame, fragment, null);
    transaction.addToBackStack(null);
    transaction.commit();
}
@Override
public void onBackPressed() {
    if (getSupportFragmentManager().getBackStackEntryCount() ==1) {
        finish();
    }else{
        super.onBackPressed()
    }
}

白屏问题也消失了

我接受了@ReazMushed的建议,改变如下:

public void switchFragment(Fragment fragment) {
    FragmentManager manager = getSupportFragmentManager();
    FragmentTransaction transaction = manager.beginTransaction();
    transaction.replace(R.id.mainFrame, fragment, null);
    transaction.addToBackStack(null);
    transaction.commit();
}
@Override
public void onBackPressed() {
    if (getSupportFragmentManager().getBackStackEntryCount() ==1) {
        finish();
    }else{
        super.onBackPressed()
    }
}

白屏问题也消失了

请显示您的xml文件我找到了解决方案,谢谢。请显示您的xml文件我找到了解决方案,谢谢。是的,您是正确的,谢谢您的帮助,但是当第一个片段从您的建议中找到时,它仍然显示一个白色屏幕,我会这样更改“如果(getSupportFragmentManager().GetBackBackbackEntryCount()==1){finish();}',我现在避免了白屏问题,虽然我不确定这是正确的解决方案。是的,你是正确的,谢谢你的帮助,但当第一个片段从你的建议中找到时,它仍然显示一个白屏,我更改如下'if(getSupportFragmentManager().GetBackBackbackEntryCount()==1){finish();},我现在避免了白屏问题,尽管我不确定这是正确的解决方案。