私のAndroidアプリでは、選択肢を提示するアクティビティのレイアウトがあります。1つのレイアウトのみが表示されているときに共有レイアウト内で共有IDを持つビューにアクセスする
<LinearLayout
android:layout_width="match_parent"
android:layout_height="wrap_content"
android:id="@+id/wrapper"
android:orientation="vertical">
<include layout="@layout/choices" />
<include layout="@layout/choice_one" />
<include layout="@layout/choice_two" />
</LinearLayout>
layout/choices
には、2つのボタンがあります。 1つのボタンはlayout/choice_one
を示し、もう1つのボタンはlayout/choice_two
を示します。 (layout/choice_one
とlayout/choice_two
中の親は、最初android:visibility=gone
に設定されています。)
をユーザが、基本的に私はVISIBLE
に可視性を設定しています、choice_one
またはchoice_two
のいずれかを選択したとき。それは素晴らしい作品です。
問題は、両方ともchoice_one
とchoice_two
の中に同じIDの要素を共有していることです。たとえば、ID header
のTextView
があります。 (私はこれらのレイアウトの1つのみが見え、同じものを使用していると考えていたので、これを行いました)
私はButterknifeを使用していて、バインドした場合のように見えます。 choice_one
またはchoice_two
、適切なheader
要素のheader.setText("Blah")
を正しく呼び出す確率は50/50です。
レイアウトのすべての要素に一意のIDを付けたり、Butterknifeを削除したり、代わりにfindViewById
を使用してこの問題を回避できると確信しています。しかし、Butterknifeや私の共有レイアウトを捨てることなく、レイアウト内で共有IDをターゲットにできる別の方法はありますか?