[Android] Android 學習筆記:避免讓程式因為按下 Back 鍵而關閉

[Android] Android 學習筆記:避免讓程式因為按下 Back 鍵而關閉

通常按下 Back 後退鍵的時候,

如果程式有開別的 activity 的話,就會回到前一個 activity 去~

但如果現在已經在程式剩下的最後一個 activity 了,再按下 back 鍵就會關掉這個程式…

如果不想要自己的程式這麼容易就被關掉,該怎麼辦呢?

 

一個簡單的方法是去覆寫 onKeyDown() 這個函式,

當發現按下的按鍵是 back 鍵時,作一些處理就可以了~

常見的處理有彈出一個視窗問使用者是否確定關閉,

或是用一個 Toast 告知使用者連按兩下 back 鍵來確定關閉程式~

 

以下的範例程式是在按下 back 鍵時,直接回到 home 主螢幕,

效果跟直接按下 Home 鍵是類似的,

當再點下 app 的圖示的時候,原本的程式畫面就會再顯示出來,

不會開一個新的 app 實體出來~

 

package com.my;

import android.app.Activity;
import android.content.Intent;
import android.view.KeyEvent;

import com.my.R;

public class MyActivity extends Activity {
       
    @Override
    public boolean onKeyDown(int keyCode, KeyEvent event) {
       
        if (keyCode == KeyEvent.KEYCODE_BACK)
        {
            // Show home screen when pressing “back” button,
            //  so that this app won’t be closed accidentally
            Intent intentHome = new Intent(Intent.ACTION_MAIN);
            intentHome.addCategory(Intent.CATEGORY_HOME);
            intentHome.setFlags(Intent.FLAG_ACTIVITY_NEW_TASK);
            startActivity(intentHome);
           
            return true;
        }
       
        return super.onKeyDown(keyCode, event);
    }
}

 

 

 

(本頁面已被瀏覽過 1,008 次)

2 thoughts on “[Android] Android 學習筆記:避免讓程式因為按下 Back 鍵而關閉

  1. 感謝大大的分享
    正在寫遊戲的我正好遇到此問題=]

  2. -1, 寫得不好.
    在activity之中 應該可以直接使用onBackPressed() 直接改寫,例如:
    @Override
    public void onBackPressed() {
    Log.d("CDA", "onBackPressed Called");
    Intent setIntent = new Intent(Intent.ACTION_MAIN);
    setIntent.addCategory(Intent.CATEGORY_HOME);
    setIntent.setFlags(Intent.FLAG_ACTIVITY_NEW_TASK);
    startActivity(setIntent);
    }
    版主回覆:(11/04/2014 03:51:25 PM)
    非常感謝您的指教~
    沒錯,onBackPressed() 是更簡單的方式,
    不過我那時並沒有注意到有這個 callback 可以使用~謝謝~ 🙂

發佈留言

發佈留言必須填寫的電子郵件地址不會公開。 必填欄位標示為 *

這個網站採用 Akismet 服務減少垃圾留言。進一步了解 Akismet 如何處理網站訪客的留言資料