[英]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.