最も奇妙なことが起こっています。私の onClick(View ...) には、コードのブロックがあり、ほとんどが 'if/else' ブロックです。シーケンスは次のとおりです(長いコードを節約するために、疑似コードで):
- imageButton.setImageResource(randomImage); を使用して設定する必要がある画像があります。それから
- 再生が必要なこの画像に関連付けられた MediaPlayer があります。
- ここに sleep(1800) を配置します。それ以外の場合、MediaPlayer は次の MediaPlayer に実行されます (これは正常に動作します)。
- この画像は別の画像と比較しています。同じでない場合は、「boo」という名前の別の MediaPlayer が再生され、上記のコード 1. で表示されるはずの画像が「flag」画像に置き換えられます。else //正しい画像の場合
- 「別の」画像に切り替え、対応する MeidaPlayer を再生し、「cheers」MediaPlayer を再生し、画像を「tick」画像に変更してから、他のロジックを実行します。
しかし、何が起こっているかというと、コード 2. が再生され、コード 3. が発生しています。コード 4. 'boo' mediaplayer だけが発生しており、imagebutton が点滅していることに気付きました。コード 1 で設定されるはずだった画像が遅れており、'boo' メディア プレーヤーの後にのみ発生しています。コード 1. の最初のイメージ設定を置き換える「フラグ」イメージが発生していますが、コード 1. が遅延しているため、何が起こっているかというと、イメージは変化していません (変化しているとはいえ、遅延しているだけで点滅するため、変化しないように見える)。したがって、コード 1. は遅延しています。また、else に入って右の画像をクリックすると、コード 5 の画像が表示されます。「別の」に切り替えますが、対応する MeidaPlayer が再生されず、「乾杯」の MediaPlayer が再生されず、「 tick' 画像はしません' t が表示され、他のロジックは発生しません。コードを無視しているかのようです。ここで何が起こっているのですか?これはマルチスレッドの状況ですか? コードのさまざまな部分を独自のスレッドにグループ化し、それらを一度に開始すると、例外がスローされるだけです。どんな助けでも大歓迎です!