Adhiwhit
Adhiwhit

Reputation: 33

Mediaplayer went away with unhandled events

I make several button sounds, but I can't play all button sounds. I have searched a solution, and the answer seems to be that I need to release() and add reset() before. But when I click the button twice, my app error says "unfortunately, the app has stopped".

My code is this:

ImageButton kaa = (ImageButton) findViewById(R.id.kaa);
    kaa.setOnClickListener(new View.OnClickListener() {
        @Override
        public void onClick(View v) {

            AlertDialog.Builder builder = new AlertDialog.Builder(HurufActivity.this);
            View view = getLayoutInflater().inflate(R.layout.huruf_ka, null);

            ImageButton ka = (ImageButton) view.findViewById(R.id.ka);
            ka.setOnClickListener(new View.OnClickListener() {
                @Override
                public void onClick(View v) {
                    buttonka.start();
                    buttonka.setOnCompletionListener(new MediaPlayer.OnCompletionListener() {
                        public void onCompletion(MediaPlayer mp) {
                            buttonka.reset();
                            buttonka.release();
                        }
                    });

                }})
builder.setView(view);
            AlertDialog dialog = builder.create();
            dialog.getWindow().setBackgroundDrawable(new ColorDrawable(android.graphics.Color.TRANSPARENT));
            dialog.show();

        }
    });

Upvotes: 1

Views: 3114

Answers (1)

Ali
Ali

Reputation: 859

Don't set an OnClickListener inside another OnClickListener.

AlertDialog.Builder builder = new AlertDialog.Builder(HurufActivity.this);
View view = getLayoutInflater().inflate(R.layout.huruf_ka, null);
ImageButton ka = (ImageButton) view.findViewById(R.id.ka);

buttonka.setOnCompletionListener(new MediaPlayer.OnCompletionListener() {
public void onCompletion(MediaPlayer mp) {
    if( buttonka != null) {
        if( buttonka.isPlaying()) {
            buttonka.stop();
        }
        buttonka.reset();
        buttonka.release();
        buttonka = null;
        }
    }
});

ka.setOnClickListener(new View.OnClickListener() {
    @Override
    public void onClick(View v) {
        buttonka.start();

    }
});

builder.setView(view);
AlertDialog dialog = builder.create();
dialog.getWindow().setBackgroundDrawable(new ColorDrawable(android.graphics.Color.TRANSPARENT));
dialog.show();


ImageButton kaa = (ImageButton) findViewById(R.id.kaa);
kaa.setOnClickListener(new View.OnClickListener() {
@Override
public void onClick(View v) {

           dialog.show();

    }
});

Upvotes: 1

Related Questions