Immer wenn ich die inflame-Methode in "OnCreateView" in Fragment-Klasse aufrufen, erwarte ich ein Fragment mit der ID Android-ID-Wert angegeben. Aber ich bekomme eine andere ID, die gleiche der ContainerID.Android - Fragment mit unterschiedlicher ID von Android: ID
Ich versuche, Fragmente in einem relativenLayout programmatisch hinzuzufügen, und für das hier gezeigte Beispiel habe ich zwei Fragmente und eines muss RelativeLayout.BELOW Parametersatz haben.
Hier ist der Code, der topsection Fragment (ts_fragment):
Die XML wie folgt aussieht:
<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
.
Hier ist der Code-Fragment hinzuzufügen:
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;
}
die View bekommt die ID von "fragmentLayout", aber Fragment bekommt eine andere ID, den Container, und das bringt meine Fragmente dazu, sich übereinander zu stellen, ohne ID zu unterscheiden.
Wie vermeide ich das? Vielen Dank.
EDIT
ich wie mit so etwas versucht: topFragment.getId(), aber es die containerID zurückgibt. Das Javadoc sagt:
Geben Sie den Bezeichner zurück, von dem dieses Fragment bekannt ist. Dies ist entweder der Android-ID-Wert, der in einem Layout bereitgestellt wird, oder die Containeransichts-ID , die beim Hinzufügen des Fragments angegeben wird.
Ich möchte nur nicht die Container-Ansicht ID, gibt es eine Möglichkeit, das Fragment zu zwingen, Android: ID-Wert?
UPDATE
Der Versuch, die verschiedenen IDs zu drucken:
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
Ja. Verwenden Sie fragment.setTag() –
@TinTran wird dieses Force-Fragment den Android: ID-Wert erhalten? –
Fragment hat standardmäßig die ID des Containers. Android: id ist die ID der Ansicht mit in dem Fragment. Tag und Fragment ID sind nicht verwandt –