Открытие childview обратно из scrollview - PullRequest
2 голосов
/ 24 мая 2009

У меня есть родитель ScrollView с дочерним видом. Когда пользователь нажимает кнопку «Назад», я хочу, чтобы дочернее представление обрабатывало событие. Я попробовал пару вещей, но ни одна из них, кажется, не работает. Нажатие кнопки «назад» убивает активность.

public class GameScrollView extends ScrollView{

     public GameScrollView(Context context) {
          super(context);
     }
     @Override
     public boolean onInterceptTouchEvent (MotionEvent ev){
          return false;

     }
     @Override
     public boolean onKeyDown (int keyCode, KeyEvent event){
          return false;

     }
}

в детском представлении у меня есть следующий код

public class GameView extends View implements OnTouchListener, onKeyListener{

     public boolean onKey(View v, int keyCode, KeyEvent event){
          if(keyCode == KeyEvent.KEYCODE_BACK){
                    //do stuff
          }
          invalidate();
          return true;        
     }
}

В ScrollView я также пытался переопределить метод dispatchKeyEvent для возврата false, но это тоже не сработало. Что я тут не так делаю?

Спасибо!

Ответы [ 2 ]

1 голос
/ 26 мая 2009

Я понял это. Причина, по которой это не сработало, заключалась в том, что у детского представления не было фокуса.

Установка свойства requestFocus() в конструкторе дочернего представления устранила проблему.

1 голос
/ 25 мая 2009
@Override 
public boolean onKeyDown(int i, KeyEvent event) {

      if (i == KeyEvent.KEYCODE_BACK) {
          return true;
        else {
          super.onKeyDown(i, event);
          return true;
        }
      }
      return false;
    }

Кроме того, я думаю, вам придется перехватывать нажатие клавиш в вашей активности, а не просмотр.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...