現在ダイアログ上のスタートボタンを押すことで録音を開始し、ストップボタンを押すと別の保存確認ダイアログが表示され、そこで保存ボタンを押すと録音した音声が保存されるプログラムを組んでいます。しかし、録音を終了すると、 RecDialog クラスの stopRecording メソッド内の mRecorder.stop()NullPointerExceptionが返ってきます。色々とトライしてみても依然結果は同じです。これはなぜなのでしょうか? DialogFragment を使っているあたり何か関係があるのでしょうか?

すみませんが、宜しくお願いします。

RecDialog:

public class RecDialog extends DialogFragment {
    private MediaRecorder mRecorder;

    @Override
    public void onCreate(Bundle savedInstanceState) {
        super.onCreate(savedInstanceState);
        LayoutInflater inflater = (LayoutInflater) getActivity().getSystemService(Context.LAYOUT_INFLATER_SERVICE);
        mView = inflater.inflate(R.layout.rec_dialog, null);

        final ImageButton recordButton = (ImageButton) mView.findViewById(R.id.recButton);
        recordButton.setOnClickListener(new View.OnClickListener() {
            @Override
            public void onClick(View v) {
                if (!mRecButtonClick) {
                    recordButton.setImageResource(R.drawable.microphone_on);
                    mRecorder = new MediaRecorder();
                    startRecording();
                    mRecButtonClick = true;
                } else {
                    recordButton.setImageResource(R.drawable.microphone_off);
                    mRecButtonClick = false;
                    showDialogBroadcast();
                }
        });
    }

    public class MyBroadcastReceiver extends BroadcastReceiver {
        @Override
        public void onReceive(Context context, Intent intent) {
            DialogFragment dialog = new SaveDialog();
            dialog.show(getFragmentManager(), "dialog");
        }
    }

    public void showDialogBroadcast() {
        Intent broadcastIntent = new Intent();
        broadcastIntent.setAction("show_saveDialog");
        getActivity().sendBroadcast(broadcastIntent);
    }

    public void startRecording() {
        File sampleDir = new File(Environment.getExternalStorageDirectory() + "/Test");
        try {
            mAudiofile = File.createTempFile("voice", ".3gp", sampleDir);
        } catch (IOException e) {
            return;
        }
        mRecorder = new MediaRecorder();
        mRecorder.setAudioSource(MediaRecorder.AudioSource.MIC);
        mRecorder.setOutputFormat(MediaRecorder.OutputFormat.THREE_GPP);
        mRecorder.setAudioEncoder(MediaRecorder.AudioEncoder.AMR_NB);
        mRecorder.setOutputFile(mAudiofile.getAbsolutePath());
        try {
            mRecorder.prepare();
        } catch (IOException e) {
            e.printStackTrace();
        }
        mRecorder.start();
    }

    public void stopRecording(String fileName) {
        mRecorder.stop();
        mRecorder.release();
        addVoiceToMediaLibrary(fileName);
    }

SaveDialog:

RecDialog recDialog = new RecDialog();
recDialog.stopRecording(editText.getText().toString());