Tengo una actividad que se llama MainAct y SubAct. MainAct es el padre de SubAct.

En SubAct, yo estoy jugando una música de fondo. Con el fin de parar la música cuando yo pulse el botón atrás, puedo implementar este código siguiente :

@Override 
    public void onBackPressed(){
      if (tick != null){
          if(tick.isPlaying())
              tick.stop();

          tick.release();
      }
 }

Con ese código, la música se detuvo, como yo esperaba. pero el problema es que no puedo ir de vuelta de subAct a MainAct

Sé que esto es trivial, pero ¿me puede mostrar la manera correcta de hacerlo?

  • Me muestran su Intención de código? quitar finish(); cuando tu Intención

5 Comentarios

  1. 8

    Acaba de volver a poner su super.onBackPressed() llamada

    @Override 
    public void onBackPressed() {
          if (tick != null){
              if(tick.isPlaying())
                  tick.stop();
    
              tick.release();
          }
    
         super.onBackPressed();
     }

    super.onBackPressed() porque si nos fijamos en Activity.java (Android 2.2)

    public void onBackPressed() {
            finish();
    }
    • u puede explicar por qué poner super.onBackPressed(); ?? funcionó pero necesito una explicación
    • Seguro. He actualizado la respuesta
  2. 4

    Acaba de llamar el método siguiente dentro de la onBackPressed() método y este va a cerrar su actividad…

    finish();

    de la siguiente manera…

    @Override 
    public void onBackPressed(){
        if (tick != null){
            if(tick.isPlaying())
                tick.stop();
    
            tick.release();
            finish();
        }
    }

    También puede hacerlo llamando a super.onBackPressed() en el interior de su onBackPressed()…así que va a mantener el comportamiento predeterminado de onBackPressed() método…

    @Override 
    public void onBackPressed(){
    
        super.onBackPressed()
    
        if (tick != null){
            if(tick.isPlaying())
                tick.stop();
    
            tick.release();
            finish();
        }
    }
    • LOL.. Tan trivial… gracias +1
    • si esto se ha solucionado su problema, por favor acepten como respuesta
  3. 2

    solo uso

    @Override 
    public void onBackPressed() {
          if (tick != null){
              if(tick.isPlaying())
                  tick.stop();
    
              tick.release();
          }
    
         super.onBackPressed();
     }

    Necesita super.onBackPressed(); porque cuando se llama super clase onBackPressed lo que está haciendo es, está llamando a finish();

    o diectly puede escribir

    @Override 
    public void onBackPressed(){
        if (tick != null){
            if(tick.isPlaying())
                tick.stop();
    
            tick.release();
            finish();
        }
    }
  4. 2

    Llamada finish() Esta es la voluntad de pop de la actividad actual de la parte posterior de la pila y de la Actividad anterior en la parte posterior de la pila de toma de enfoque.

    También a la actividad del ciclo de vida y detener su música en onStop() o onDestroy().

    Clic en atrás botón de llamada finish(). No hay necesidad de reemplazar onBackPressed(). Simplemente gestionar el ciclo de vida de los métodos correctamente.

Dejar respuesta

Please enter your comment!
Please enter your name here