【问题标题】:Mediaplayer went away with unhandled eventsMediaplayer 离开了未处理的事件
【发布时间】:2017-07-16 11:28:28
【问题描述】:

我发出了几个按钮声音,但我无法播放所有按钮声音。我已经搜索了一个解决方案,答案似乎是我需要 release() 并添加 reset() 之前。但是当我点击该按钮两次时,我的应用错误提示“不幸的是,该应用已停止”。

我的代码是这样的:

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();

        }
    });

【问题讨论】:

    标签: android button android-mediaplayer


    【解决方案1】:

    不要在另一个 OnClickListener 中设置 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();
    
        }
    });
    

    【讨论】:

    • 我有按钮 ("kaa") 当我点击时,显示 alertdialog,在 alertdialog 里面,我把按钮命名为 ("ka"),当我点击 ("ka") 时有声音。在 alertdialog 里面,我把五个按钮命名为 ("ka"), ("ki"), ("ku"), ("ke"), ("ko")
    • dialog.show(); 放入 kaa 的 OnClickListener(见编辑)。
    猜你喜欢
    • 2013-08-11
    • 1970-01-01
    • 2012-10-21
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2015-06-25
    相关资源
    最近更新 更多