2011-01-06 18 views
1

ユーザーが表示して操作するメインディスプレイを制御する主なアクティビティを持つアプリケーションを作成しています。Android間アクティビティシグナリング(初心者向け質問)

また、オプションメニューがあり、各メニュー項目にはさまざまな従属タスクを実行するための独自のアクティビティとレイアウトがあります。これらのタスクの中には、メインディスプレイの内容を変更するものがあります。だから私はそれらの従属アクティビティが、次回のコントロールがメインアクティビティ、たとえばonResume()ハンドラに転送されたときに、メインのアクティビティにメインディスプレイを再描画または再計算する必要があることを通知できるようにします。

1つのアクティビティが何かをしなければならないことを他のアクティビティに知らせるための軽量な方法とは何ですか?私はWindowsの背景から来ているので、WM_PAINTメッセージを送信するのと同等のものを探しています。また、主なアクティビティのフラグやセマフォを設定して読み込みます。

私は主なアクティビティにパブリックブール値を入れようとしましたが、静的でなければならないと訴えました。前もって感謝します!

答えて

2

アンドロイドアプリの2つのコンポーネントが互いに話す方法は、ブロードキャストとブロードキャストレシーバです。 http://developer.android.com/reference/android/content/BroadcastReceiver.html

ブロードキャストレシーバは、マニフェストまたはコード内で動的に登録できます(登録を解除するか、ログに漏れた放送受信者に関するメッセージが表示されます)。

受信者を登録するときは、ブロードキャスティングの作成に使用した意図に合致するインテントを提供する必要があります。

別の可能な方法は、1つのアクティビティを別のアクティビティから直接呼び出す場合は、startActivityForResult()メソッドを呼び出すことです。http://developer.android.com/reference/android/app/Activity.html#startActivityForResult(android.content.Intent、int)。

オハイオ州のすべてのアンドロイドアプリは、あなたがタップすることができるので、あなたが再描画するたびにそれを確認することができますグローバルな共有の参照があります。

+0

私はブロードキャストとインテントのものを考えましたが、私は必要なものが過度のものに見えました。そして、私は主なアクティビティを開始しようとしていません - 従属アクティビティが終了した後、そのonResumeメソッドが制御を取得すると、それはとにかく実行されます。だから、私がブーリアン、フラグ、セマフォーとして探しているものを記述したのです(私はおそらくWM_PAINTについて言及することで混乱しています)。 Androidでは、共有された環境設定で「永続的なキーと値のペアのプリミティブデータ型を保存して取得できます」と言っていますが、これを維持しようとはしていないので、パブリックブール値を公開する軽量な方法はありませんか? –

+0

その場合は、実際にはsharedpreferencesを探しているだけです。http://developer.android.com/reference/android/content/SharedPreferences.htmlまた、データ永続性に関するセクションhttp://developer.android.com /guide/topics/data/data-storage.html基本的に、getSharedPreferences()をチェックアウトしてください:http://developer.android.com/reference/android/content/Context.html#getSharedPreferences(java.lang.String、int )、またはgetDefaultSharedPreferences()http://developer.android.com/reference/android/preference/PreferenceManager.html#getDefaultSharedPreferences(android.content.Context) –