Android 監聽返回鍵退出程序的兩種實現


1、Android 雙擊返回鍵退出程序

    思路:用戶按下返回鍵時設定一個定時器來監控是否2秒內實現了退出,如果用戶沒有接着按返回鍵,則清除第一次按返回鍵的效果,使程序還原到第一次按下返回鍵之前的狀態。定時器是每次用戶按下返回鍵才去創建。

代碼如下:

 

    /**
     * 菜單、返回鍵響應
     */
    @Override
    public boolean onKeyDown(int keyCode, KeyEvent event) {
        // TODO Auto-generated method stub
        if(keyCode == KeyEvent.KEYCODE_BACK)
        {  
            exitBy2Click();        //調用雙擊退出函數
        }
        return false;
    }
    /**
     * 雙擊退出函數
     */
    private static Boolean isExit = false;

    private void exitBy2Click() {
        Timer tExit = null;
        if (isExit == false) {
            isExit = true; // 准備退出
            Toast.makeText(this, "再按一次退出程序", Toast.LENGTH_SHORT).show();
            tExit = new Timer();
            tExit.schedule(new TimerTask() {
                @Override
                public void run() {
                    isExit = false; // 取消退出
                }
            }, 2000); // 如果2秒鍾內沒有按下返回鍵,則啟動定時器取消掉剛才執行的任務

        } else {
            finish();
            System.exit(0);
        }
    }

 

其中onKeyDown()函數可以在菜單欄Source->Override/Implement Methods里找到,雙擊即可自動添加到代碼中。

 

2、監聽返回鍵,彈出一個退出對話框

 

Android 如何監聽返回鍵點擊事件,並創建一個退出對話框,

 

防止自己寫的應用程序不小心點擊退出鍵而直接退出。

 

源碼如下:

 

/**監聽對話框里面的button點擊事件*/
DialogInterface.OnClickListener listener = new DialogInterface.OnClickListener()
{
        public void onClick(DialogInterface dialog, int which)
        {
            switch (which)
            {
            case AlertDialog.BUTTON_POSITIVE:// "確認"按鈕退出程序
                finish();
                break;
            case AlertDialog.BUTTON_NEGATIVE:// "取消"第二個按鈕取消對話框
                break;
            default:
                break;
            }
        }
};    
@Override
public boolean onKeyDown(int keyCode, KeyEvent event)
{
        if (keyCode == KeyEvent.KEYCODE_BACK )
        {
//            // 創建退出對話框
//            AlertDialog isExit = new AlertDialog.Builder(this).create();
//            // 設置對話框標題
//            isExit.setTitle("系統提示");
//            // 設置對話框消息
//            isExit.setMessage("確定要退出嗎");
//            // 添加選擇按鈕並注冊監聽
//            isExit.setPositiveButton("確定",null);
//            isExit.setNegativeButton("取消", listener);
//            // 顯示對話框
//            isExit.show();
            
            
            new AlertDialog.Builder(this)
            .setTitle("系統提示") 
            .setMessage("確定要退出嗎")
            .setPositiveButton("確定", listener)
            .setNegativeButton("取消", listener)
            .show();

        }
        return false;
}

 

 

 

 

 

 

 


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM