2012-07-01 2 views
0

У меня есть эта иерархия просмотров: активность -> ViewPager -> MyViewGroupOnKeyUp не работает с точки зрения ребенка

В 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(); 
    } 
} 

Если вы хотите изменить это поведение, вы должны переопределить onBackPressed в вашей деятельности и сделать его не называют супер. Затем вы можете реализовать свое собственное поведение.

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

Итак, я не могу справиться с этим в ViewGroup, только в Activity? – arts777

Смежные вопросы