首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >如何在TTS OnUtteranceCompleted回调中访问布局?

如何在TTS OnUtteranceCompleted回调中访问布局?
EN

Stack Overflow用户
提问于 2012-08-27 07:37:30
回答 1查看 308关注 0票数 2

我正在做一个简单的Android程序,运行助记符或数学练习的训练目的。我有一个“新练习”按钮,可以改变问题和答案。我想实现一种“文本到语音”模式,在这种模式下,软件读取问题和答案。在他们说完之后,它应该计算一个新的问题并重新开始。

我正在使用OnUtteranceCompleted来确定演讲是否已经结束。我的问题是我不能从回调中访问我的“新练习”按钮。

我使用的是:

代码语言:javascript
复制
private TextToSpeech.OnUtteranceCompletedListener onUtteranceCompleted = new TextToSpeech.OnUtteranceCompletedListener()
{
        @Override
        public void onUtteranceCompleted(String utteranceId)
        {
                if(0 == utteranceId.compareToIgnoreCase(END_OF_SPEECH))
                {
                        Log.i("TTS","Completed");
                        if (TTSMode == TTS_MODE_ON) {
                            //Start new
                             Log.i("TTS","TTS mode is on: start new exercize");
                            NewExercize();
                             btnNewEx.performClick();

                        }
                }

        }
};

我得到了以下错误:$CalledFromWrongThreadException:只有创建视图层次结构的原始线程才能访问它的视图。

我可以生成新的问题/答案,但不能使用按钮更改TTS引擎使用的新问题或答案的字段。

有什么想法吗?

EN

回答 1

Stack Overflow用户

回答已采纳

发布于 2012-08-27 07:42:18

您需要使用runOnUiThread

代码语言:javascript
复制
context.runOnUiThread( new Runnable() {
    public void run() {
        btnNewEx.performClick();
    }
});

(您可以省略“context”。如果"this“是一个活动或服务子类)

票数 3
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/12134766

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档