尝试在setOnUtteranceProgressListener内部调用Toaster或Custom函数 [英] Trying to call Toaster or Custom function inside setOnUtteranceProgressListener
问题描述
在我的主要Fragment中,我实现了TextToSpeech mainFragment extends Fragment implements TextToSpeech.OnInitListener
.
In my main Fragment, I have implemented TextToSpeech mainFragment extends Fragment implements TextToSpeech.OnInitListener
.
文字语音转换正常,我还添加了UtteranceProgressListener
.
The text to speech is working fine, also i have added an UtteranceProgressListener
which is working.
我的问题:
无法调用任何自定义函数,例如gotoNextChapter()
甚至简单的Toaster
.
出现错误Can't create handler inside thread that has not called Looper.prepare()
My problem :
Am unable to call any custom functions eg gotoNextChapter()
or even a simple Toaster
.
getting error Can't create handler inside thread that has not called Looper.prepare()
欢迎任何建议或解决方案....
Any suggestions or solutions welcomed....
我的代码段:
UtteranceProgressListener SpeechListener = new UtteranceProgressListener() {
@Override
public void onStart(String utteranceId) {
Toast.makeText(getActivity(),utteranceId, Toast.LENGTH_LONG).show();
}
@Override
public void onDone(String utteranceId) {
Toast.makeText(getActivity(),utteranceId, Toast.LENGTH_LONG).show();
gotoNextChapter(); <====function I want to call
read_mode = 0;
}
@Override
public void onError(String utteranceId) {
Toast.makeText(getActivity(),utteranceId, Toast.LENGTH_LONG).show();
}
};
设置发声完整监听器:
myTTS.setOnUtteranceProgressListener(SpeechListener);
错误提示:
Caught a RuntimeException from the binder stub implementation.
java.lang.RuntimeException: Can't create handler inside thread that has not called Looper.prepare()
at
android.os.Handler.<init>(Handler.java:209)
at
android.os.Handler.<init>(Handler.java:123)
at
android.widget.Toast$TN.<init>(Toast.java:350)
at
android.widget.Toast.<init>(Toast.java:106)
at
android.widget.Toast.makeText(Toast.java:264)
at com.MainActivity$Read$10.onDone(MainActivity.java:1252)
推荐答案
好,我有一个解决方案,现在我的问题似乎微不足道
ok I got a solution, now my question just seems trivial
我更新的代码如下:
@Override
public void onDone(String utteranceId) {
runOnUiThread(new Runnable() {
public void run() {
Toast.makeText(getContext(),utteranceId,Toast.LENGTH_LONG).show();
gotoNextChapter(); <====function I want to call
read_mode = 0;
}
});
}
在这里感谢这些家伙: 如何在文本后敬酒to Speech完成讲Android 和>何时需要在android应用程序中使用runOnUiThread?
Thanks to these guyes here: How can I Toast after Text to Speech finish speaking Android and When may we need to use runOnUiThread in android application?
这篇关于尝试在setOnUtteranceProgressListener内部调用Toaster或Custom函数的文章就介绍到这了,希望我们推荐的答案对大家有所帮助,也希望大家多多支持IT屋!