2012-01-20 24 views
1

ハンドラを介してメインアクティビティに結果を返すスレッドを実行するメインアクティビティがあります。私は、上記のスレッドが作成された直後に、minアクティビティから呼び出される別のアクティビティを作成しようとしています。この第2のアクティビティは、主なアクティビティ(エクストラを送信することによって送信される)からの結果(つまり文字列フィールド)を示します。したがって、String値は、最初はNULL値に初期化され、ある時点後にはNULL値に初期化されます。 ThreadはStringの値を更新します。したがって、この更新された値をすでにアクティビティスタックの先頭にある2番目のアクティビティに送信し、そのストリングの更新された値を待機する必要があります。メインアクティビティが更新された値を持つときにサブアクティビティを通知する必要があります

私は周りを見回しましたが、人々はonActivityResult()技術について議論します。あなたはこれの実装について考えていますか?

答えて

0

Strin値が変更され、そのアクティビティの変更をリッスンしてから、String値に基づいて新しい行動を開始することをお勧めします。あなたは、テキストがヌルであるかどうかを表示しチェックするためのボタンを設け、それに応じてアクティビティを起動することができます。 この方法は実現可能です。

2

私は2つの可能な解決策を参照してください。2番目のアクティビティ(受信機)がSINGLE_TOP属性を持っている場合、あなたはそれを意図を送信し、Activity.onNewIntent()でそれを処理することができ

  • を。インテントのSINGLE_TOPフラグも機能するはずです。
  • あなたは((SenderActivity) getParent()).setReceiverHandler(handler)によってセンダアクティビティに受信アクティビティからハンドラに渡す(このコードはReceiverActivityに存在する、setReceiverHandler()SenderActivity内で宣言されなければならない)、任意の変更についてReceiverActivityを通知するためにそれを使用することができます。 UPD:このアプローチでは、TabActivityとその埋め込みアクティビティ間の通信が可能です。一般的にはうまくいかないでしょう。
+0

2番目の提案では、((SenderActivity)getParent())はnullを返します。ドキュメンテーションによると、getParent()はこのビューが埋め込み子である場合に親アクティビティを返します。次に、Activityの代わりにActivityGroupを拡張するようにSenderActivityを変更しました。しかし、それはまた動作しませんでした。あなたが書いたことを行うための2つの活動の方法は何でしょうか? – baris

+0

あなたはそうです。このメソッドは、コードで頻繁に使用されているため、実際にはTabActivityとその子の間でのみ動作します。 – Ash

関連する問題