ハンドヘルドのlayout.xmlとタブレットlayout.xmlを持つアプリがあります。フラグメントは、このように宣言されてlayout.xml内部:物事をシンプルに保つのと同じのためにXMLレイアウトのView要素のID文字列を再利用
<LinearLayout xmlns:android="http://schemas.android.com/apk/res/android"
android:orientation="horizontal"
android:layout_width="fill_parent"
android:layout_height="fill_parent"
android:paddingTop="2dp"
android:paddingBottom="2dp">
<fragment class="com.example.MyFrag"
android:id="@+id/myFrag"
android:layout_width="fill_parent"
android:layout_height="fill_parent"/>
</LinearLayout>
、のは、このlayout.xmlは、解像度/レイアウトおよび解像度/レイアウト-大で同一であることとしましょう。私の主な活動で
、私はこのようなこのフラグメント参照:
final myFrag = (MyFrag) getSupportFragmentManager().findFragmentById(R.id.myFrag);
をこれはタブレットのため正常に動作しますが、私はハンドヘルド上で実行しようとすると、myFragはnullです。周りをちょっと遊んだ後、ハンドヘルドのlayout.xmlの名前をmyFrag2に変更して代わりにその名前を検索すると、それが動作することがわかりました。どのような私を混乱することはAndroidのドキュメントによると、私はこのIDを再利用することができるはずです。
http://developer.android.com/guide/topics/ui/declaring-layout.html#id
私が何か間違ったことをやっていますか?私は本当にmyFragがnullであるかどうかをテストするためのコードを書く必要はなく、代わりにハンドヘルド名をロードしようとします...
ドキュメントでこのルールの明示的な言及が見つかりませんでした。私が前提にしているのは、与えられたサイズに対して明示的なリソースを提供しなかった場合、res/layoutのデフォルトになります。私は上の質問を説明するために単純な例を使用しましたが、重複しているフラグメントIDを持っていない他のリソースがいくつかあります。 – Nick