繁体   English   中英

IF ELSE语句中的onBackPress无法正常工作

[英]onBackPress in IF ELSE statement doesn't work properly

我在public void onBackPressed()上遇到了一些麻烦。 IF ELSE语句中的所有内容都可以正常工作,但最终的ELSE除外。 最终的ELSE语句应该关闭应用程序,但不会关闭 有人可以帮我解决这个问题吗?

@Override
public void onBackPressed() {

    int count = getFragmentManager().getBackStackEntryCount();

    DrawerLayout drawer = (DrawerLayout) findViewById(R.id.drawer_layout);
    if (drawer.isDrawerOpen(GravityCompat.START)) {
        drawer.closeDrawer(GravityCompat.START);

    } else if (mWebView.canGoBack()) {
        //returns previous webpage
        mWebView.goBack();

    }else if (count == 0) {
        //closes Fragment
        getFragmentManager().popBackStack();
        HomeFragment homefragment = new HomeFragment();
        FragmentManager manager =getSupportFragmentManager();
        manager.beginTransaction().replace(
                R.id.relativelayout_for_fragment,
                homefragment,
                homefragment.getTag()).commit();
    } else {
        //Close app (Not working!!)
        super.onBackPressed();
    }
}

在使用以下条件时,请使用适当的括号:

if(condition){

  } else {
     if(condition){

       } else {

    } 
 } 

不会使您感到困惑。

    @Override
    public void onBackPressed() {

        int count = getFragmentManager().getBackStackEntryCount();

        DrawerLayout drawer = (DrawerLayout) findViewById(R.id.drawer_layout);
        if (drawer.isDrawerOpen(GravityCompat.START)) {
            drawer.closeDrawer(GravityCompat.START);
        } else {
            if (mWebView.canGoBack()) {
                //returns previous webpage
                mWebView.goBack();

            } else {
                if (count == 0) {
                    //closes Fragment
                    getFragmentManager().popBackStack();
                    HomeFragment homefragment = new HomeFragment();
                    FragmentManager manager = getSupportFragmentManager();
                    manager.beginTransaction().replace(
                            R.id.relativelayout_for_fragment,
                            homefragment,
                            homefragment.getTag()).commit();
                } else {
                    //Close app (Not working!!)
                    super.onBackPressed();
                }
            }
        }
    }

由于仅在计数大于0时才需要从堆栈中删除片段,因此请修改您的第三条if-else语句以反映这一点:

@Override 
public void onBackPressed() { 

    int count = getFragmentManager().getBackStackEntryCount();

    DrawerLayout drawer = (DrawerLayout) findViewById(R.id.drawer_layout);
    if (drawer.isDrawerOpen(GravityCompat.START)) {
        drawer.closeDrawer(GravityCompat.START);

    } else if (mWebView.canGoBack()) { 
        //returns previous webpage 
        mWebView.goBack(); 

    }else if (count != 0) {  // change here
        //closes Fragment 
        getFragmentManager().popBackStack();
        HomeFragment homefragment = new HomeFragment();
        FragmentManager manager =getSupportFragmentManager(); 
        manager.beginTransaction().replace( 
                R.id.relativelayout_for_fragment,
                homefragment,
                homefragment.getTag()).commit();
    } else { 
        // probably working now
        super.onBackPressed(); 
    } 
} 

最后一个块尝试一下,

super.onBackPressed();
完();

暂无
暂无

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

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM