简体   繁体   English

按后退按钮移动到上一个片段时显示空白屏幕

[英]Blank screen is displayed when pressing the back button to move to previous fragment

when I'm pressing the back button it is moving to the previous fragment but also displaying a blank screen and I need to click it to eliminate it.当我按下后退按钮时,它会移动到上一个片段,但也会显示一个空白屏幕,我需要单击它才能将其消除。 How do I get rid of this blank screen?我如何摆脱这个空白屏幕? I saw its somehow connected to the first addToBackStack but I still couldn't fix it我看到它以某种方式连接到第一个addToBackStack但我仍然无法修复它

here's my onNavigationItemSelected method:这是我的onNavigationItemSelected方法:

public boolean onNavigationItemSelected(@NonNull MenuItem menuItem) {
        Fragment fragment=null;
        switch (menuItem.getItemId()) {
            case R.id.nav_home:
                fragment=new HomeFragment();
                break;
            case R.id.nav_income:
                fragment=new IncomeFragment();
                break;
            case R.id.nav_expense:
                fragment=new ExpenseFragment();
                break;
            case R.id.nav_sign_out:
                FirebaseAuth mAuth = FirebaseAuth.getInstance();
                mAuth.signOut();
                startActivity(new Intent(getApplicationContext(), WelcomeActivity.class));
                Toast.makeText(getApplicationContext(), "Signed Out", Toast.LENGTH_LONG).show();
                break;

        }
        if(fragment!=null)
            getSupportFragmentManager().beginTransaction().
                    replace(R.id.fragment_container, fragment).addToBackStack("").commit();

        return true;
    }

here's my onBackPressed() method:这是我的onBackPressed()方法:

  public void onBackPressed() {
        final FragmentManager fragmentManager = getSupportFragmentManager();
        if (drawerLayout.isDrawerOpen(GravityCompat.START)) {
            drawerLayout.closeDrawer(GravityCompat.START);
        } else {
            AlertDialog.Builder builder = new AlertDialog.Builder(this, R.style.AlertDialogCustom);
            if (fragmentManager.getBackStackEntryCount() == 0) {
                builder.setTitle("Sign out");
                builder.setMessage("Are you sure you want to sign out?");
                builder.setPositiveButton("YES", new DialogInterface.OnClickListener() {

                    public void onClick(DialogInterface dialog, int which) {
                        firebaseAuth.signOut();
                        dialog.dismiss();
                        startActivity(new Intent(getApplicationContext(), WelcomeActivity.class));
                    }
                });

                builder.setNegativeButton("NO", new DialogInterface.OnClickListener() {

                    @Override
                    public void onClick(DialogInterface dialog, int which) {
                        dialog.dismiss();
                    }
                });
            } else {
                    fragmentManager.popBackStack();
            }

            AlertDialog alert = builder.create();
            alert.show();
        }
    }

You need to change if condition as per below如果条件如下,您需要更改

if(fragmentManager.getBackStackEntryCount() - 1 == 0){
    //Do your code
}else{
    fragmentManager.popBackStack();
}

As per your code please find below full code根据您的代码,请在下面找到完整的代码

public void onBackPressed() {
    final FragmentManager fragmentManager = getSupportFragmentManager();
    if (drawerLayout.isDrawerOpen(GravityCompat.START)) {
        drawerLayout.closeDrawer(GravityCompat.START);
    } else {
        if (fragmentManager.getBackStackEntryCount() - 1 == 0) {
            AlertDialog.Builder builder = new AlertDialog.Builder(this, R.style.AlertDialogCustom);
            builder.setTitle("Sign out");
            builder.setMessage("Are you sure you want to sign out?");
            builder.setPositiveButton("YES", new DialogInterface.OnClickListener() {
                public void onClick(DialogInterface dialog, int which) {
                    firebaseAuth.signOut();
                    dialog.dismiss();
                    startActivity(new Intent(getApplicationContext(), WelcomeActivity.class));
                }
            });
            builder.setNegativeButton("NO", new DialogInterface.OnClickListener() {
                @Override
                public void onClick(DialogInterface dialog, int which) {
                    dialog.dismiss();
                }
            });
            AlertDialog alert = builder.create();
            alert.show();
        } else {
            fragmentManager.popBackStack();
        }
    }
}

I hope this can help You!我希望这可以帮助你!

Thank You.谢谢你。

Update onCreateView of your all fragment更新所有片段的 onCreateView

View view; 
public View onCreateView(LayoutInflater inflater, ViewGroup container,
    Bundle savedInstanceState) {
    if (view != null) {
    if (view.getParent() != null) {
        ((ViewGroup)view.getParent()).removeView(view);
    }
    return view;
}

View v=inflater.inflate(R.layout.tests, container, false);

Hope this will helps!!希望这会有所帮助!!

Hi I guess It is because last fragment is getting removed and you are seeing blank screen which is fragment container where you add fragments.嗨,我猜这是因为最后一个片段被删除了,您看到的是空白屏幕,这是您添加片段的片段容器。 So, when last screen is reached please finish that activity before starting other one.因此,当到达最后一个屏幕时,请先完成该活动,然后再开始其他活动。 Use This code for starting new Activity.使用此代码启动新活动。

Intent intent=new Intent(getApplicationContext(), WelcomeActivity.class);
finish();   //finish used to finish blank screen activity
startActivity(intent);

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

相关问题 按下后退按钮时,上一个片段显示空白屏幕(使用多个 fragmentTransactions) - Previous fragment shows blank screen when back button pressed (using multiple fragmentTransactions) 无法显示作弊吐司,按返回按钮时应用程序无法返回上一屏幕 - Unable to get Cheat Toast to show and when pressing the back button the application is not going back to the previous screen 按下返回按钮时如何获取最后使用的片段 - How to get last Fragment used when pressing back button 使用Back按钮离开GuidedStepFragment时黑屏 - Blank Screen when Leaving GuidedStepFragment with Back Button 按下后退按钮时避免启动屏幕活动 - Avoid splash screen activity when pressing Back button 通过按返回按钮重新启动上一个活动 - Restarting the previous activity by pressing back button 按下片段中的设备后退按钮时如何使媒体播放器停止返回活动 - How to make media player stop when pressing device back button from a fragment back to activity 片段未在后退按钮上打开上一个片段 - Fragment not Opening Previous Fragment on Back Button 从片段到上一个片段的后退箭头按钮 - Back arrow button from fragment to previous fragment 按后退按钮时,我的“视频视图”为空白。 我该如何解决? - my "video view" is blank when pressing the back button. How i can fix it?
 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM