2012-07-01 30 views
0

我的意見,該層次結構: 活動 - > ViewPager - > MyViewGroup的onkeyup沒有在子視圖工作

在MyViewGroup(只有那裏)我重寫onkeyup事件:

@Override 
    public boolean onKeyUp(int keyCode, KeyEvent event) { 
     if (keyCode == KeyEvent.KEYCODE_BACK) { 
      Log.i(TAG, "Back"); 
      return true; 
     } else { 
      return super.onKeyUp(keyCode, event); 
     } 
    } 

但是當我按下「返回」鍵時,這個覆蓋不被調用,應用程序關閉。爲什麼?

回答

1

默認情況下,後退按鈕完成活動。來自android源:

當活動檢測到用戶按下後退鍵時調用。默認實現只是完成當前活動,但您可以覆蓋它以執行任何您想要的操作。

public void onBackPressed() { 
    if (!mFragments.popBackStackImmediate()) { 
     finish(); 
    } 
} 

如果你想改變這種行爲,你必須在你的Activity中重寫onBackPressed,並且不要調用super。然後你可以實現你自己的行爲。

public @Override void onBackPressed() 
{ 
    if (doSomeThingOnBackPressed) { 
     // do some stuff 
     return; 
    } 
    super.onBackPressed(); 
} 
+0

因此,我無法在ViewGroup中處理它,只能在Activity中處理它? – arts777