私はAndroidアプリケーションにカスタムのタイトルバーを持っていますが、その中には簡単なTextView
があります。私はどのような活動からタイトルを更新するために使用するための最善のクラス/メソッドが何になるのだろうか?たとえば、このタイトルバーを持つTabActivity
があります。タブアクティビティのいずれかが変更されたときにタイトルを変更する必要があります。また、タブのコンテキストにない他のアクティビティでもタイトルバーを変更したいと考えています。AndroidのActionScript 3のイベントブロードキャストに相当するものは何ですか?
私はBroadcastReceivers
とIntents
見てきたが、私は本当に命名法を理解していないので、私は、ActionScriptのEvent
放送のようなものの同等が何であるかわかりません。私はタイトルバークラスがString
を受信し、そのイベントを受け取ったときにタイトルを更新する "グローバル"アプリケーションイベントを待ち受けるようにしたいと思います。どうすればいい?
別の例では、iOSではNSNotificationCenter
を使用し、postNotification
を使用して「イベント」を発生させます。その後、私はビューコントローラaddObserver
を持って、そのイベントを聞いてそれに応答します。これはAndroidフレームワーク内でどのように成し遂げられましたか?
<?xml version="1.0" encoding="utf-8"?>
<LinearLayout xmlns:android="http://schemas.android.com/apk/res/android"
android:orientation="vertical"
android:layout_width="fill_parent"
android:layout_height="fill_parent">
<!-- here's my header-->
<include layout="@layout/header"/>
<TabHost
android:id="@android:id/tabhost"
android:layout_width="fill_parent"
android:layout_height="fill_parent">
<LinearLayout
android:orientation="vertical"
android:layout_width="fill_parent"
android:layout_height="fill_parent">
<FrameLayout
android:id="@android:id/tabcontent"
android:layout_width="fill_parent"
android:layout_height="0dip"
android:layout_weight="1"/>
<TabWidget
style="@style/TabWidget"
android:id="@android:id/tabs"
android:layout_width="fill_parent"
android:layout_height="wrap_content"/>
</LinearLayout>
</TabHost>
とヘッダが含まれ、私は変更するテキストフィールドがあります:
は例のために、私は私の "メイン" の活動を持っているので、
<?xml version="1.0" encoding="utf-8"?>
<LinearLayout xmlns:android="http://schemas.android.com/apk/res/android"
style="@style/Header">
<TextView
style="@style/HeaderTitle"
android:text="@string/app_name"/>
</LinearLayout>
を基本的には、TabHost内のアクティビティ、またはヘッダーが含まれている他のアクティビティからヘッダーに通知を渡す方法を探しています。
"グローバル"アプリケーションイベントとは、イベントバブリングの行に沿って何かを参照していますか?ここでイベントはツリー構造を下から上に移動しますか? AS2 ASBroadcasterの行に沿って、文字列と同じ名前の関数をリスナーが持つ限り、文字列識別子はどこでも関数を呼び出すことができます。あるいは、おそらく両方の混合物。文字列は関数にマッピングされますが、関数の名前ではありませんか? – scriptocalypse
またはのいずれか。私は、TitleBarがTabHostにロードされるアクティビティのレイアウトの一部ではないことを知っています。そのため、タイトルバーをどのようにターゲットするかはわかりません。 – typeoneerror
getParent()を使用してメインアクティビティにアクセスできるように見えますが、そのようなアクティビティを結合したくありません。 – typeoneerror