Pregunta

Tengo un ScrollView padres con miras niño. Cuando el usuario presiona el botón de retroceso, quiero la opinión de los niños a controlar el evento. He intentado un par de cosas, pero ninguno de ellos parece funcionar. Al pulsar el botón de retroceso mata a la actividad.

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;

     }
}

en la vista de niño tengo el siguiente código

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;        
     }
}

En el ScrollView también he intentado anular el dispatchKeyEventmethod para volver falsa, pero que no funcionó bien. ¿Qué estoy haciendo mal aquí?

Gracias!

¿Fue útil?

Solución 2

lo he descubierto. La razón de que esto no estaba funcionando era porque la vista niño no tiene el foco.

Al establecer la propiedad requestFocus() en el constructor de la vista del niño ha solucionado el problema.

Otros consejos

@Override 
public boolean onKeyDown(int i, KeyEvent event) {

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

Además, creo que tendría que interceptar la pulsación de tecla en su actividad y no la vista.

Licenciado bajo: CC-BY-SA con atribución
No afiliado a StackOverflow
scroll top