La aplicación se bloquea cuando presiona el botón Guardar

Tengo un problema con respecto a guardar el volumen cambiado cuando presiono un botón y no entiendo por qué. ¿Podría por favor ayudar por favor? Mi código a continuación:

    private AudioManager aManager;
    private SeekBar seekVolume;
    private Button save;



    @Override
    public void onCreate(Bundle savedInstanceState) {
        super.onCreate(savedInstanceState);
        setContentView(R.layout.main);

        aManager = (AudioManager) getSystemService(Context.AUDIO_SERVICE);
        Button save = (Button) findViewById(R.id.save);

}
    public void saveOnClickListener(View view){

            int progress = 1;
            int keyCode = 0;
            KeyEvent keyEvent;
                aManager.setStreamVolume(AudioManager.STREAM_RING, progress  , AudioManager.FLAG_SHOW_UI + AudioManager.FLAG_PLAY_SOUND);
                if(keyCode==KeyEvent.KEYCODE_VOLUME_DOWN || keyCode==KeyEvent.KEYCODE_VOLUME_UP){
    seekVolume.setProgress(aManager.getStreamVolume(AudioManager.STREAM_RING));

            }else if (keyCode==KeyEvent.KEYCODE_VOLUME_DOWN || keyCode==KeyEvent.KEYCODE_VOLUME_UP){
                seekVolume.setProgress(aManager.getStreamVolume(AudioManager.STREAM_NOTIFICATION));

                }
 }

}

Primero quiero hacer cambios para el volumen del timbre, y cuando presione el botón Guardar, para confirmar los cambios. Gracias chicos

preguntado el 12 de junio de 12 a las 09:06

¿Qué dice el LogCat? -

Supongo que esto no necesita ningún permiso, ¿no? -

SeekBar seekVolume = (SeekBar) findViewById(R.id.seekVolume); -

No sé si esto provoca un bloqueo, pero lo declaras dos veces. Es suficiente en onCreate -

agregue la declaración de interrupción después del bloque de cambio de caso y también elimine la declaración duplicada de seekVolume. -

3 Respuestas

creo que en xml no has agregado esto ya que has usado el método saveOnClickListener agregue xml en la propiedad Button como

 android:onClick="saveOnClickListener" 

o puede usar en la actividad como se muestra a continuación si no ha agregado en xml

 Button save = (Button) findViewById(R.id.save);    
 save.setOnClickListener(new View.OnClickListener() {

        @Override
        public void onClick(View v) {
            // TODO Auto-generated method stub
          // do here what u want onclick of save button 
               }
        }


    });

Respondido el 12 de junio de 12 a las 10:06

En mi XML para el botón Guardar, tengo android:onCLick="saveOnClickListener" Gracias Khan- ionutz staniu

ahora está funcionando, pero vea (vea el código editado arriba) y otro comentario mío. Gracias compañero - ionutz staniu

para eso tienes que usar seekbar.setOnSeekBarChangeListener (nuevo OnSeekBarChangeListener()... etc. haces esto donde obtienes el método para importar desde el cual cambia el volumen en onProgessChangemethod - Kan

pero como puedo usar seekBar.setOnSeekBarChangeListener() dentro de save.saveOnClickListener(View view) ? - ionutz staniu

no tengo suficiente reputación para hablar en el chat :|. Trato de averiguar cómo puedo poner seekBar.setOnSeekBarChangeListener(), fuera de onCLick, y aún así, los cambios se guardan cuando presiono el botón Guardar - ionutz staniu

ha hecho que aManager sea local en oncrete, por lo que su variable global con el mismo nombre aún sería nula en saveOnClickListener

en lugar de esto

 AudioManager aManager = (AudioManager) getSystemService(Context.AUDIO_SERVICE);

utilizado

aManager = (AudioManager) getSystemService(Context.AUDIO_SERVICE);

en Oncreate...........

Respondido el 12 de junio de 12 a las 10:06

Será mejor que hagas aManager y seekVolume global y elimines

    SeekBar seekVolume = (SeekBar) findViewById(R.id.seekVolume);

en el onClickListener

Respondido el 12 de junio de 12 a las 10:06

No es la respuesta que estás buscando? Examinar otras preguntas etiquetadas or haz tu propia pregunta.