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();},我现在避免了白屏问题,尽管我不确定这是正确的解决方案。