2017-12-26 13 views
1

2つのアクティビティAとBがあります。Aには、曲のリストを含むrecyclerViewがあります。私が1つのコマンドをクリックするとBに行き、それを再生し始めます。 BにはonCompletionListener()があるので、自動で曲を変更して再生します。アクティビティAに戻ると、現在再生中の曲の名前がテキストビューに表示されます。問題は、曲がバックゴルンで変更された場合、textViewを自動的に更新することができないことです。 私が教えてくれた1つの解決策は、textViewを静的にして、それをBのOnCompletionListenerから変更していますが、その効果がわかりません。それをするより良い方法がありますか? ご協力いただければ幸いです。前もって感謝します。バックグラウンドアクティビティのイベントによるアクティビティの更新

+0

1. Aでローカルブロードキャストレシーバを使用し、Bからブロードキャストを送信します。 または、 2. startActivityForResult()を使用してBを開始し、onActivityResult()を使用して値をAに戻します。 –

+0

各曲に一意の識別子があると仮定すると、再生された最後の曲を戻すのが最も簡単です。最初の活動。 –

答えて

0

あなたは、Android、Androidのコンポーネント間の通信チャネルを作成するための最も簡単な(かつ最速の)方法で、初心者がEventBus

のようなバスを使用しているならあなただけの情報を含むクラスを作成する必要があり、あなたのアクティビティはバスに加入し、これらのオブジェクトをお互いに非常に簡単に送受信します。

1

これを実装するには、いくつかの方法があります。

  • ハンドラ は、あなたがAにハンドラを実装し、Bにハンドラのアドレスを渡すそして、あなたはこのハンドラを使用してメッセージを送信することができます。
  • BroadcastReceiver ハンドラと同じです。 Aで実装し、BroadcastReceiverのアドレスをBに渡すことができます。これを使用してBにブロードキャストを送信することができます。
  • startActivityForResult startActivityForResultを使用してアクティビティBを開始できます。 AのonActivityResult関数を実装する必要があります.Bが完了したら、Aにデータを送信できます。 Bが終了したら、最後の曲データをAに送ることができます。

私はあなたを助けてくれることを願っています!その後、

+0

ここでハンドラの使い方を教えてもらえますか?私はアンドロイドの初心者です –

+0

ハンドラm_handler =新しいハンドラ(ルーパー、getMainLooper()){public void handleMessage(Message msg){[あなたのコード]}};このハンドラをアクティビティBに渡すことができ、BではsendMessage()を使用してメッセージを送信できます。あなたがもっと必要な場合は、私はコードブロックで別の答えを投稿することができます。 – lucasjensen

+0

正しいコードを入力すれば –

関連する問題