2017-08-04 46 views
1

我一直在一個Android應用程序,其中主要包含本地HTML頁面只有一個Mainactivity。我使用此代碼退出應用程序時,按兩次將退出應用程序。 例如我有兩個HTML文件內的資產文件夾和一個頁面鏈接到其他。如果我已經從A轉到B,那麼如果後退按鈕被按下一次,它應該將我重定向到上一頁,並且如果按下兩次將退出應用程序。現在的代碼我使用退出應用程序,如果按兩次是...攔截返回按鈕回到上一頁,如果按下一次,如果兩次退出

boolean doubleBackToExitPressedOnce = false; 

@Override 
public void onBackPressed() { 
if (doubleBackToExitPressedOnce) { 
    super.onBackPressed(); 
    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;      
    } 
}, 2000); 

}

我想實現的方法,如果按一次會重定向到前一頁和兩次,如果按將退出應用程序。 任何幫助將不勝感激。

回答

1

可以實現這樣說:

boolean doubleBackToExitPressed = false; 
long lastBackPressTime = 0; 

@Override 
public void onBackPressed() { 
    // assuming the gap between two presses is 500ms 
    long currentTime = System.currentTimeMillis(); 
    if (currentTime - lastBackPressTime < 500) { 
     doubleBackToExitPressed = true; 
     super.onBackPressed(); 
     return; 
    } else { 
     lastBackPressTime = System.currentTimeMillis(); 
     Toast.makeText(this, "Please click BACK again to exit", Toast.LENGTH_SHORT).show(); 

    } 

    new Handler().postDelayed(new Runnable() { 
     @Override 
     public void run() { 
      if (!doubleBackToExitPressed) { 
       // go to the previous webpage 
      } else { 
       doubleBackToExitPressed = false; 
      } 
     } 
    }, 510); // trigger this after 510 milli seconds 
} 

在這段代碼,就先回壓,當前時間被保存,並在第二回壓,它與lastBackPressTime比較。如果間隙小於500毫秒,則調用super.onBackPressed()

處理程序內的代碼在510毫秒後觸發,並檢查doubleBackToExitPressed是否爲false

+0

它的工作原理與我發佈的代碼相同。假設我有兩個本地html文件,一個html文件與另一個html文件鏈接,請考慮A到B和B到A.現在我想要的是如果我已經從A到B,那麼在按Back按鈕時會重定向到原始或上一個頁面即A,如果按兩次將退出應用程序。我希望我解釋得很好。 –

+0

您正在使用'WebView'來顯示頁面?你已經知道頁面的地址'A'和'B'? – ZeekHuge

+0

是的,我有...這是一個離線應用程序,每個頁面都在一個assest文件夾中,我已經將它們重命名爲1.html和2.html,最多7個頁面和一個主頁,例如index.html –

相關問題