Fragmentクラスの "OnCreateView"でinflateメソッドを呼び出すときは、アンドロイド:id値で指定されたIDを持つフラグメントを取得すると予想されます。 しかし、コンテナIDと同じIDを取得します。アンドロイド:idと異なるidを持つフラグメント
relativeLayoutにプログラムでフラグメントを追加しようとしています。ここに示す例では、フラグメントが2つあり、RelativeLayout.BELOWパラメータを設定する必要があります。ここ
コードはtopsection断片(ts_fragment)から、である。
XMLは次のようになり:ここ
<RelativeLayout xmlns:android="http://schemas.android.com/apk/res/android"
android:layout_width="match_parent" android:layout_height="match_parent"
android:id="@+id/ts_fragment">
.
.-->other stuff
.
フラグメントを追加するためのコードである:
public View onCreateView(LayoutInflater inflater,ViewGroup container, Bundle savedInstanceState) {
View view=inflater.inflate(fragmentLayout,container,false);
setGraphics(view); //custom function which gets views and sets gui.
return view;
}
ビューは "fragmentLayout"のIDを取得しますが、フラグメントは別のID、コンテナ1を取得します。これにより、IDを区別せずにフラグメントを別のものに置きます。
これを避けるには?ありがとう。 )topFragment.getId(が、それはContainerIDのを返します。
EDIT
は、私のようなものを使用してみました。 javadocはこう言っています:
このフラグメントがわかっている識別子を返します。これは、レイアウトで提供された アンドロイド:id値か、フラグメントを追加するときにコンテナビューID が提供されます。
私はちょうどコンテナビューのIDが欲しくない、フラグメントがアンドロイドを持つように強制する方法はありますか:id value?異なるIDを印刷しようと
UPDATE
:
My_Android: Main layout has id: 2131492958 //R.id.MainLayout ->ContainerID
My_Android: MyTopFragment{5cd93c9} - id: 2130968617 //R.id.ts_fragment value
My_Android: MyBottomFragment{2055ace} - id: 2130968601 //R.id.bs_fragment value
My_Android: MyTopFragment has ID: 2131492958 //After inflating process, the fragment gets this id, the same of R.id.MainLayout
My_Android: MyBottomFragment has ID: 2131492958 //Idem
はい。 fragment.setTag()を使用してください –
@TinTranはこの強制フラグメントにアンドロイド:id値を取得させますか? –
フラグメントはデフォルトでコンテナのIDを持ちます。 Android:idは、フラグメント内のビューのIDです。タグとフラグメントのIDは関連していません –