最初にお詫びです。昨日の結論は間違っていました。 TTSを用いるのに、onInitの中でのみ利用できるということはありませんでした。 TTSが初期化されるのには十分に長い時間が必要ですので、onCreateやonStartのような最初のほうで実行されるようなメソッドの中ではTTSの初期化が終わらないということだと思います。またメインスレッドから切り替わらないと初期化が行われないのかもしれません。 詳細はわかりませんんが、遅めのメソッド、例えばActivity#onWindowFocusChangedにてonStartにて作成したTTSのインスタンスを利用したら使用できました。 ここからTTSのインスタンスを利用するには確実な方法はonInitの中での実行、そうでなければActivityに状態変数としてフラグを作成し、onInitでフラグを立ててonClickの中などでフラグを見て実行する感