常常看到許多APP應用程式,當你要離開按下返回鍵(<-)時

就會跳出視窗詢問是否要離開,所以就試著寫寫看

原本以為寫在onPuse()裡面就好,結果完全不是這麼回事

後來查了一下才發現完全寫錯地方啊~~~

是要重寫onKeyDown才對,先來看看效果圖。

Back_Key  

 


 

因為不難,接下來就上程式碼了,

Layout的部分由於是使用預設的,所以就不貼上來了。

Java部分的程式碼:

Back_KeyActivity.java

package com.example.back_key;

import android.app.Activity;
import android.app.AlertDialog;
import android.content.DialogInterface;
import android.os.Bundle;
import android.view.KeyEvent;

public class Back_KeyActivity extends Activity {

	@Override
	protected void onCreate(Bundle savedInstanceState) {
		super.onCreate(savedInstanceState);
		setContentView(R.layout.back__key);
	}

	@Override
	public boolean onKeyDown(int keyCode, KeyEvent event) {
		// TODO Auto-generated method stub

		if (keyCode == KeyEvent.KEYCODE_BACK) { // 攔截返回鍵
			new AlertDialog.Builder(Back_KeyActivity.this)
					.setTitle("確認視窗")
					.setMessage("確定要結束應用程式嗎?")
					.setIcon(R.drawable.ic_launcher)
					.setPositiveButton("確定",
							new DialogInterface.OnClickListener() {

								@Override
								public void onClick(DialogInterface dialog,
										int which) {
									finish();
								}
							})
					.setNegativeButton("取消",
							new DialogInterface.OnClickListener() {

								@Override
								public void onClick(DialogInterface dialog,
										int which) {
									// TODO Auto-generated method stub

								}
							}).show();
		}
		return true;
	}

}

 其實實做上並不會太難,

第21行的 KEYCODE_BACK 其實也可以改成 HOME 這樣的話也可以攔截HOME鍵了,當然也可以改成其他按鍵摟。

範例下載(Mega空間):

https://mega.co.nz/#!dQBDwaQB!yIWMwlKTWvPmsQgWTVhFpmuBQ_PxyGqsfOluyGpSYyM

小空 發表在 痞客邦 留言(2) 人氣()