- Java 双重比较
- java - 比较器与 Apache BeanComparator
- Objective-C 完成 block 导致额外的方法调用?
- database - RESTful URI 是否应该公开数据库主键?
在我的主 Fragment 中,我实现了 TextToSpeech mainFragment extends Fragment implements TextToSpeech.OnInitListener
。
文本转语音工作正常,我还添加了一个正在工作的 UtteranceProgressListener
。
我的问题:我无法调用任何自定义函数,例如 gotoNextChapter()
甚至是简单的 Toaster
。出现错误 Can't create handler inside thread that has not called Looper.prepare()
欢迎提出任何建议或解决方案....
我的代码 fragment :
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)
最佳答案
好的,我有一个解决方案,现在我的问题看起来微不足道了
我更新后的代码如下所示:
@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;
}
});
}
在此感谢这些家伙: How can I Toast after Text to Speech finish speaking Android和 When may we need to use runOnUiThread in android application?
关于android - 尝试在 setOnUtteranceProgressListener 中调用 Toaster 或自定义函数,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/43017607/
我将 ngx-toaster 与 disableTimeOut 设置为 true。所以它不会自动隐藏。但是现在我不会在用户离开页面时(在 ngOnDestroy 方法内)以编程方式隐藏它。我该怎么做?
如何在启动另一个 AngularJS-Toaster 之前停止 AngularJS-Toaster,就像我想停止 toaster.pop('wait', "Email verification", '
我正在 angular2 应用程序中使用 angular2 toastr 。在应用程序启动时,我遇到了错误。 我的 app_module 如下: import { NgModule } fr
我正在尝试复制 Gmail 通知程序弹出窗口。 它同时淡入(不透明度)并从开始栏升高。 我已经设法使用计时器和不透明度进行淡入/淡出,但我该怎么做: A) 使表单看起来“弹出”? (我认为它的高度通过
我试图点击页面上的一个元素;该元素在屏幕上清晰可见。有一个 toastr 可能会弹出,所以我试图写一个防御:如果 toastr 在屏幕上,先关闭 toastr ,然后继续点击进入下一页。我正在使用 P
上下文 我在页面中使用dojox/Widget/Toaster,但它的位置位于最 Angular 落(br或tr)。在最 Angular 落,有与 Toaster 背景颜色相同的页眉和页脚。 问题 我
目前,我正在做一个使用 angular2-toaster 的项目。 // Show message notification this.toasterService.pop('success',
我正在尝试为 $exceptionHandler 装饰器中处理的错误 toast ,如下所示, var app = angular.module('myApp',['toaster']); app.c
在我的主 Fragment 中,我实现了 TextToSpeech mainFragment extends Fragment implements TextToSpeech.OnInitListen
我用了Angular-toaster看起来棒极了。搜索堆栈并没有发现: 如何在 Controller 的 toastr 容器中存储打开的 toast 数量? angular.module('main'
如果我的应用程序在 responseError 代码中捕获到 http 错误,我正在使用拦截器显示 toast 消息。我正在使用 AngularJS 拦截器。这是一个 MEAN.JS 应用程序。 拦截
我正在使用这个库 ( https://github.com/CodeSeven/toastr ),我正在尝试将我的 Flash 通知推送到 Toastr 为我提供的 javascript 函数。如何为
我想在 Excel 上创建/使用 toastr 通知。因为我们已经使用 MsgBox 来通知用户发生了某些事情。 但它使脚本停止(暂停)。 你知道怎么做吗?在谷歌上有“系统托盘通知”,但它需要很多代码
我正在使用 .NET 并正在创建一个桌面应用程序/服务,当某些事件被触发时,它会在我桌面的一角显示通知。我不想使用过于干扰的常规消息框 b/c。我希望通知滑入 View ,然后在几秒钟后淡出。我正在考
我正在通过研究 WDK 8.1 学习 Windows 驱动程序开发 Toaster Sample Driver .我可以构建、安装、调试 KMDF 总线和 KMDF 功能驱动程序并与之通信。我遇到的问
我是一名优秀的程序员,十分优秀!