Я получаю отчет об исключении нулевого указателя в консоли разработчика Android. Мне нужно некоторые рекомендации относительно того, что, возможно, проблема здесь, трассировки стека, как этоAndroid TextToSpeech app null Указатель исключения
java.lang.NullPointerException
at com.myfreeapp.workers.Speaker.onInit(Speaker.java:57)
at android.speech.tts.TextToSpeech$1.onServiceConnected(TextToSpeech.java:451)
at android.app.ActivityThread$PackageInfo$ServiceDispatcher.doConnected(ActivityThread.java:1247)
at android.app.ActivityThread$PackageInfo$ServiceDispatcher$RunConnection.run(ActivityThread.java:1264)
at android.os.Handler.handleCallback(Handler.java:587)
at android.os.Handler.dispatchMessage(Handler.java:92)
at android.os.Looper.loop(Looper.java:123)
at android.app.ActivityThread.main(ActivityThread.java:4668)
at java.lang.reflect.Method.invokeNative(Native Method)
at java.lang.reflect.Method.invoke(Method.java:521)
at com.android.internal.os.ZygoteInit$MethodAndArgsCaller.run(ZygoteInit.java:878)
at com.android.internal.os.ZygoteInit.main(ZygoteInit.java:636)
at dalvik.system.NativeStart.main(Native Method)
Соответствующий фрагмент кода в мое приложение является
public Speaker(final Context context, final Settings settings)
{
this.settings = settings;
params = new HashMap<String, String>();
params.put(TextToSpeech.Engine.KEY_PARAM_STREAM, String.valueOf(AudioManager.STREAM_ALARM));
params.put(TextToSpeech.Engine.KEY_PARAM_UTTERANCE_ID, "myfreeapps");
tts= new TextToSpeech(context, this);
Utils.log(TAG, "Created TextToSpeech..");
}
@Override
public void onInit(final int status)
{
Utils.log(TAG, "TTS onInit..");
//below is line 57 mentioned in the stack trace
tts.setOnUtteranceCompletedListener(new SpeechFinishedListener());
tts.setLanguage(Locale.getDefault());
tts.setSpeechRate(settings.getSpeed());
tts.setPitch(settings.getPitch());
ready = true;
}
Пожалуйста, прежде всего я должен быть ясно что именно равно null .. Является ли трассировка стека указателем на переменную tts в строке 57 равную null ..?
Или исключение нулевого указателя происходит внутри метода TextToSpeech setOnUtteranceCompletedListener?
экземплярСпикер создается на основном потоке в липкую службы, и когда я отлаживать код обратного вызова из TextToSpeech также возвращается в том же потоке ..
Я не понимаю, как мог переменная tts be null ???
Кстати, эта проблема не воспроизводится на моем конце. Я уже несколько раз рассказывал об этом стэке стеки на консоли разработчика.
Пожалуйста, посоветуйте,
Является ли их причина вы инициализация вашего объекта TextToSpeech в конструктор против ins ide onInit? – HandlerExploit
Ну, onInit вызывается в результате создания TextToSpeech (контекст, это); второй параметр для конструктора TextToSpeech - это реализация OnInitListener, у которого есть метод onInit .. Класс речи реализует интерфейс OnInitListener. – Ahmed