4

基本的にストーリーブックのような自動再生機能を備えたアプリを書いています。onCompletionListenerナレーションが完了すると次のアクティビティ(ページ)が開始されるように、アクティビティ(ページ)ごとにメディアプレーヤーを設定しました。自動再生をオフにするオプションがあります(自分のペースで読むことができます)...しかし、オフにすると、アクティビティ(現在のページ)が前のonCompletionListener呼び出しを「記憶」します(戻るボタンを使用して前のアクティビティに戻ります)。後続のアクティビティ(ページ)は正常に機能します...開始するロジックチェックにより、onCompletionListener実行されなくなります。

また、自動再生が切り替えられるメニューが全画面を引き継ぎ、前のアクティビティ(ページ)を実行するため、そのロジックチェックをonStart()[ではなく]に移動してみました。この設定により、が再度実行されるのを防ぎますが、前のを「キャンセル」することはありません。注:これは、アクティビティ(ページ)がで開始された場合にのみ問題になります。onCreateonStop()onCompletionListeneronCompletionListenerautoplay=on

super.recreate()また、すべてを「再開」するために、その特定のアクティビティを簡単に試しました(できれば、を含むonCompletionListener)。ただし、結果はきれいではありませんでした(アクティビティが空白になり、再初期化されることはありませんでした)。

(私にとって)これは手続き上の質問であるため、コードは含めませんでした。1. onCompletionListener「キャンセル」できます。もしそうなら、どのように?2.そうでない場合(私はjava / androidに比較的慣れていないため)、recreateメソッドは、アクティビティ全体(およびそのonCompletionListener内部)を「リセット」するために受け入れ可能/有益ですか?

API11以降を対象としています。任意の考え/建設的な批判をいただければ幸いです。

4

3 に答える 3

0

それを「キャンセル」する方法は、リリースメソッドを使用することです。そして、あなたは新しいページを開くときにそれを行うことを検討する必要があります(アクティビティ)

于 2012-12-09T22:01:31.690 に答える
0

以前に設定したものをキャンセルしたい場合onCompletionListenerは、何もしない新しいものを設定するだけです。

于 2012-12-09T22:18:35.517 に答える
0

考えられる解決策は次のとおりです。

  1. onDestroyには、setOnCompletionListener(null)を使用します。

  2. 必要な設定が変更されたら、グローバルフラグ(アプリケーションの作成時にも設定されます)を設定し、リスナーイベントでフラグを確認します。

于 2012-12-09T22:38:02.920 に答える