2017-04-03 142 views
-2

我使用后退按钮下面的代码,但它不能正常工作不会退出应用,如果我按userdevice的后退按钮的Android后退按钮的应用程序没有关闭

private Boolean exit = false; 

     @Override 
     public void onBackPressed() { 
      if (exit) { 
       this.finish(); // finish activity 
      } else { 
       Toast.makeText(this, "Press Back again to Exit.", 
         Toast.LENGTH_SHORT).show(); 
       exit = true; 
       new Handler().postDelayed(new Runnable() { 
        @Override 
        public void run() { 
         exit = false; 
        } 
       }, 3 * 1000); 

      } 

     } 
+0

的[点击返回按钮两次退出活动]可能的复制(http://stackoverflow.com/questions/8430805/clicking-the-back-button-twice-to-exit-an-activity ) –

+1

您必须在3秒内按下按钮2次 – Redman

+0

您可能还有其他活动,关闭其中一个并不意味着关闭应用程序。 – Flot2011

回答

0

改变你这样的代码。

private Boolean exit = false; 

      @Override 
      public void onBackPressed() { 
       if (exit) { 
        this.finishAffinity(); 
       } else { 
        Toast.makeText(this, "Press Back again to Exit.", 
          Toast.LENGTH_SHORT).show(); 
        exit = true; 
        new Handler().postDelayed(new Runnable() { 
         @Override 
         public void run() { 
          exit = false; 
         } 
        }, 3 * 1000); 

       } 

      } 
+0

此解决方案正在工作谢谢 – Dipak

0

使用本...

private long lastBackPressTime = 0; 

    @Override 
    public void onBackPressed() { 

     if (this.lastBackPressTime < System.currentTimeMillis() - 4000) { 

      //Add Snhackbar or Toast, whatever you want 
      this.lastBackPressTime = System.currentTimeMillis(); 

     } else { 
      if (toast != null) { 
       toast.cancel(); 
      } 
      moveTaskToBack(true); 

     } 

    } 
0

这可能工作。改为使用finishAffinity()

boolean doubleBackToExitPressedOnce = false; 

    public void onBackPressed(){ 
     if(doubleBackToExitPressedOnce) 
     { 
      finishAffinity(); 
      return; 
     } 

     this.doubleBackToExitPressedOnce = true; 
     Toast.makeText(this, "Please click back again to exit", Toast.LENGTH_SHORT).show(); 

     new Handler().postDelayed(new Runnable() { 
      @Override 
      public void run() { 
       doubleBackToExitPressedOnce = false; 

      } 
     },3500); 
    } 
+0

此解决方案正在工作谢谢 – Dipak

0

keep a boolean toClose = false; 和onBackPressed()方法使用此代码

if (toClose) 
    super.onBackPressed(); 
    else 
    { 
     toClose=true; 
     Utils.showToast(context,getString(R.string.back_again)); 
     new Handler().postDelayed(new Runnable() { 
      @Override 
      public void run() { 
       toClose=false; 
      } 
     },2000); 
    } 
0

这会为你工作 全球

private boolean doubleBackToExitProceed = false; 
@Override 
    public void onBackPressed() { 
    if (doubleBackToExitProceed) { 
     finish(); 
     return; 
    } 
    doubleBackToExitProceed = true; 
    Toast.makeText(this, "Press Back again to Exit.", Toast.LENGTH_SHORT).show(); 

    new Handler().postDelayed(new Runnable() { 

     @Override 
     public void run() { 
     doubleBackToExitProceed = false; 
     } 
    }, 2000);// time in milliseconds. 
    } 
0

定义这一点,使用此功能可以关闭在按下后退按钮的应用程序。

@Override 
    public void onBackPressed() { 

      Intent intent = new Intent(Intent.ACTION_MAIN); 
      startMain.addCategory(Intent.CATEGORY_HOME); 
      startActivity(intent); 
     } 
2

private Boolean exit = false;

 @Override 
     public void onBackPressed() { 
      if (exit) { 
       this.finishAffinity(); 
      } else { 
       Toast.makeText(this, "Press Back again to Exit.", 
         Toast.LENGTH_SHORT).show(); 
       exit = true; 
       new Handler().postDelayed(new Runnable() { 
        @Override 
        public void run() { 
         exit = false; 
        } 
       }, 3 * 1000); 

      } 

     } 
相关问题