Я сделал музыкальную викторину, аналогичную той, что была в iPod, все работает идеально, пока моя программа не вызовет класс MP3 (http: / /pastebin.com/d52fe24ce), чтобы остановить функцию close (). Проблема в моем случае заключается в том, что MP3 не создается при вызове. Я не уверен, но думаю, что это потому, что созданный мной плеер не является нулевым (см. Main.java http: // pastebin. com / d32ef2c06 вокруг строки 261), хотя на самом деле нет "экземпляра" проигрывателя ... Кто-нибудь знает, как я могу заставить проигрыватель закрыть поток?

1
Philip 13 Янв 2010 в 17:38
Если не считать диких догадок и туманных обобщений, никто не сможет здесь многого сделать для вас, если вы не опубликуете какой-то код. Кроме того, если вы подозреваете, что созданный вами объект может иметь значение null, это довольно легко проверить, не так ли?
 – 
Steve B.
13 Янв 2010 в 17:43
1
+1 за использование pastebin вместо того, чтобы сбрасывать здесь весь код
 – 
Aaron Digulla
13 Янв 2010 в 17:43
Эй, блок внутри player! = null выполнен или нет? было бы полезно знать это.
 – 
moritz
13 Янв 2010 в 17:43
Блок выполняется, когда я пытался выполнить его без работающего игрока, он дал мне исключение NullPointerException.
 – 
Philip
13 Янв 2010 в 17:47
В Java нет функций ....
 – 
pjp
13 Янв 2010 в 17:56

2 ответа

Лучший ответ

В строке 283 вы говорите:

 MP3 player = new MP3...

Здесь вы создаете новую локальную переменную. Удалите первый «MP3», чтобы новому проигрывателю было присвоено поле player:

player = new MP3...
1
Aaron Digulla 13 Янв 2010 в 17:43

Строка 283:

MP3 player = new MP3(((SongQuestion)question).getSongPath());

Должно быть:

player = new MP3(((SongQuestion)question).getSongPath());

Здесь используется MP3-плеер уровня экземпляра. То, что вы сейчас делаете, создает новый local MP3 player, который маскирует экземпляр уровня один.

1
Skip Head 13 Янв 2010 в 17:43
Это то, что я подозревал, но не знал, как на самом деле указать на проблему! Спасибо, попробую!
 – 
Philip
13 Янв 2010 в 17:47