0

私はJavaの初心者なので、非常にばかげた間違いを犯した場合はご容赦ください。SoundPoolを使ったカウンターアプリでボタンクリック時に音を鳴らそうとしたのですが、どちらかのボタンをクリックするとアプリがクラッシュしてしまいます。コンパイル中にエラーは表示されません。これがコードです。

package com.example.c0unter;

import android.os.Bundle;
import android.app.Activity;
import android.view.Menu;
import android.view.View;
import android.view.View.OnClickListener;
import android.widget.Button;
import android.widget.TextView;
import android.media.SoundPool;
import android.media.AudioManager;

public class MainActivity extends Activity {

    private int Count=0;
    private SoundPool spool;

    @Override
    protected void onCreate(Bundle savedInstanceState) {
        super.onCreate(savedInstanceState);
        setContentView(R.layout.activity_main);


        Button ResetButton = (Button) findViewById(R.id.ResetButton);
        Button CounterButton = (Button) findViewById(R.id.CounterButton);
        final TextView CountText = (TextView) findViewById(R.id.CountText);


         ResetButton.setOnClickListener(new OnClickListener() {

            public void onClick(View v) {
                Sound(R.raw.reset_button);
                Count=0;
                CountText.setText(" " + Count);

            }

        });




     CounterButton.setOnClickListener(new OnClickListener() {

         public void onClick(View v) {
             Sound(R.raw.counter_button);
             Count++;
             CountText.setText(" " +Count);
         }
     });
    }

    public void Sound(int soundID){

          spool.load(this, soundID ,1);
          AudioManager audioManager = (AudioManager) getSystemService(AUDIO_SERVICE);
          float volume = (float) audioManager.getStreamVolume(AudioManager.STREAM_MUSIC);
          spool.play(soundID, volume, volume, 1, 0, 1f);
    };

}
4

1 に答える 1

1

spoolですnull。ここで呼び出す場合:

spool.load(this, soundID ,1);

を取得しnullPointerExceptionます。使用する前に、最初に初期化する必要があります。例えば:

spool = new SoundPool(10, AudioManager.STREAM_MUSIC, 0);

コードには他にもエラーがあるため、このようなチュートリアルのいくつかをもう一度確認することをお勧めします。最初にサウンドをロードして ID を取得し、その ID を に渡す必要がありますplay。に渡すだけでは機能R.raw.reset_buttonplayません。

于 2013-07-30T13:46:20.713 に答える