1

さて、私はサウンド付きの ListView を持っています。それらの 1 つをクリックすると、その曲の再生が開始されますが、他の 1 つまたは 1 つをクリックすると、まだ再生されます。私がやりたいのは、もう一方を押したときにその音を止めることです。私はそれをグーグルで検索し、ここで解決策とまったく同じ質問を見つけましたが、それは私にとってはうまくいきません. 「タイプ MediaPlayer のメソッド setDataSource(String) は、引数 (int) には適用できません」というエラーが表示されます。どのアイテム行がクリックされたのか、特定の位置を取得する方法がわかりません。これは、私の onListItemClick() メソッドで今のところ持っているものです:

@Override
    public void onListItemClick(ListView parent, View v, int position, long id) {
        Minions s = (Minions) mSounds.get(position);
        MediaPlayer mPlayer;

        final boolean isPlaying = false;

        if(!isPlaying){
            mPlayer = new MediaPlayer();
            mPlayer.setDataSource(s.getSoundResourceId());
            mPlayer.prepare();
            mPlayer.start();
            isPlaying = true; 

        }else{

            isPlaying = false;
            mPlayer.stop();
            mPlayer.reset();
            mPlayer.setDataSource(s.getSoundResourceId());
            mPlayer.prepare();
            mPlayer.start();
            isPlaying = true;

        }

        mPlayer.setOnCompletionListener(new OnCompletionListener() {

            public void onCompletion(MediaPlayer mPlayer) {
                mPlayer.release();
                isPlaying = false;
            }

        });

    }
4

2 に答える 2

1

試すsetDataSource(""+s.getSoundResourceId());

それ以外のsetDataSource(s.getSoundResourceId());

PS。初期化もmPlayer

MediaPlayer mPlayer=new MediaPlayer();代わりに好き MediaPlayer mPlayer;

mPlayer = new MediaPlayer();これをif条件から削除してください!

于 2013-08-02T10:49:05.650 に答える