1. 程式人生 > >Android TabActivity 返回鍵實現QQ類似的功能

Android TabActivity 返回鍵實現QQ類似的功能

一般Activity中監聽返回鍵,都是重寫onKeyDown(int keyCode, KeyEvent event)方法對手機按鍵進行監聽,

而當要監聽的Activity為TabActivity時(其實ListActivity也一樣),這個方法並不起作用。

下面是解決辦法:

正在開發的應用的首頁是一個TabActivity,當用戶按下返回鍵時會退出程式,想退出到後臺看home鍵,還不是銷燬。

  • 常規方法像上文說的重寫onKeyDown(int keyCode, KeyEvent event),根本不起作用;
  • 又發現SDK2.0以後新增了一個專門針對返回鍵的方法onBackPressed(),還是不起作用。

現有一個dispatchKeyEvent(KeyEvent event)果然管用

下面是一段示例程式碼,返回鍵 實現home鍵的功能,類似QQ的功能:

	public boolean dispatchKeyEvent(KeyEvent event) {
		if (event.getAction() == KeyEvent.ACTION_DOWN
				&& event.getKeyCode() == KeyEvent.KEYCODE_BACK) {
			Intent setIntent = new Intent(Intent.ACTION_MAIN);
			setIntent.addCategory(Intent.CATEGORY_HOME);
			setIntent.setFlags(Intent.FLAG_ACTIVITY_NEW_TASK);
			startActivity(setIntent);
		}
		return super.dispatchKeyEvent(event);
	}

注意:

if判斷中要加一個event.getAction() == KeyEvent.ACTION_DOWN判斷,

因為按鍵有兩個事件ACTION_DOWN和ACTION_UP,也就是按下和鬆開,如果不加這個判斷,程式碼會執行兩遍。




<pre name="code" class="java">