1

J'essaie de résoudre un problème plus important lié à l'animation d'un fragment imbriqué. J'ai donc créé un projet distinct et j'essaie de le résoudre en modules.Pourquoi la visibilité change-t-elle avant/après l'insertion de fragments imbriqués

La première partie est sur la visibilité au sein de la childFragment - J'ai essayé différents types de code et je ne sais pas pourquoi quand j'ajouter layoutReturn.setVisibility(View.INVISIBLE);

After adding the child fragment, the parent fragment remains

Le fragment parent est caché. Pourtant, lorsque j'ajoute cette ligne après l'insertion du fragment enfant:

@Override 
public void onClick(View v) { 

    //layoutReturn.setVisibility(View.INVISIBLE); 

    FragmentManager childFrag = getFragmentManager(); 
    FragmentTransaction childFragTrans = childFrag.beginTransaction(); 
    addressCard_fragment addressCardChild = new addressCard_fragment(); 
    childFragTrans.add(R.id.bottom_row_fragment_container, addressCardChild); 
    //childFragTrans.setCustomAnimations(R.animator.slide_in_card, R.animator.slide_out_card); 
    childFragTrans.commit(); 
    Toast.makeText(getActivity().getBaseContext(), "yo", Toast.LENGTH_SHORT).show(); 
    layoutReturn.setVisibility(View.INVISIBLE); 


} 

La modification n'a aucun effet. Le fragment parent reste visible, le Toast apparaît mais le childFragment reste invisible. Toute aide serait grandement appréciée!

Activité principale:

public class MainActivity extends AppCompatActivity { 

private topRow_fragment fragmentTopRow; 

@Override 
protected void onCreate(Bundle savedInstanceState) { 
    super.onCreate(savedInstanceState); 
    setContentView(R.layout.activity_main); 

    if (savedInstanceState == null) { 
     fragmentTopRow = new topRow_fragment(); 
    } 

    FragmentManager fragmentManager = getFragmentManager(); 
    FragmentTransaction fragmentTransaction = fragmentManager.beginTransaction(); 
    fragmentTransaction.add(R.id.top_row_fragment_container, fragmentTopRow); 
    fragmentTransaction.commit(); 
}} 

classe parentFragment:

public class topRow_fragment extends Fragment implements View.OnClickListener{ 

ImageButton btn; 
View layoutReturn; 

@Nullable 
@Override 
public View onCreateView(LayoutInflater inflater, ViewGroup container, Bundle savedInstanceState) { 
    layoutReturn = inflater.inflate(R.layout.firstrow_fragment, container, false); 

    btn = (ImageButton) layoutReturn.findViewById(R.id.imageLeft); 
    btn.setOnClickListener(this); 

    return layoutReturn; 
} 

@Override 
public void onClick(View v) { 

    //layoutReturn.setVisibility(View.INVISIBLE); 

    FragmentManager childFrag = getFragmentManager(); 
    FragmentTransaction childFragTrans = childFrag.beginTransaction(); 
    addressCard_fragment addressCardChild = new addressCard_fragment(); 
    childFragTrans.add(R.id.bottom_row_fragment_container, addressCardChild); 
    //childFragTrans.setCustomAnimations(R.animator.slide_in_card, R.animator.slide_out_card); 
    childFragTrans.commit(); 
    Toast.makeText(getActivity().getBaseContext(), "yo", Toast.LENGTH_SHORT).show(); 
    layoutReturn.setVisibility(View.INVISIBLE); 


}} 

classe childFragment est juste la méthode onCreateView typique.

Update01: Quand j'utilise getChildFragmentManager Je reçois une erreur énorme qui commence par 09-14 22:54:34.933 20795-20795/com.example.bryanjordan.nestedfragmentstest E/FragmentManager: No view found for id 0x7f0c0060 (com.example.bryanjordan.nestedfragmentstest:id/bottom_row_fragment_container) for fragment addressCard_fragment{7d09836 #0 id=0x7f0c0060}

et se résume à: java.lang.IllegalArgumentException: No view found for id 0x7f0c0060 (com.example.bryanjordan.nestedfragmentstest:id/bottom_row_fragment_container) for fragment addressCard_fragment{7d09836 #0 id=0x7f0c0060}

fichiers XML:

Activité principale:

<?xml version="1.0" encoding="utf-8"?><RelativeLayout xmlns:android="http://schemas.android.com/apk/res/android" 
xmlns:app="http://schemas.android.com/apk/res-auto" 
xmlns:tools="http://schemas.android.com/tools" 
android:layout_width="match_parent" 
android:layout_height="wrap_content" 
tools:context="com.example.bryanjordan.nestedfragmentstest.MainActivity"> 

<android.support.constraint.ConstraintLayout 
    android:layout_width="wrap_content" 
    android:layout_height="wrap_content"> 

    <android.support.constraint.ConstraintLayout 
     android:layout_width="368dp" 
     android:layout_height="wrap_content" 
     tools:layout_editor_absoluteY="8dp" 
     android:id="@+id/constraintLayout" 
     android:layout_marginLeft="8dp" 
     app:layout_constraintLeft_toLeftOf="parent" 
     android:layout_marginRight="8dp" 
     app:layout_constraintRight_toRightOf="parent"> 

     <RelativeLayout 
      android:id="@+id/top_row_fragment_container" 
      android:layout_width="367dp" 
      android:layout_height="wrap_content" 
      android:layout_marginStart="8dp" 
      android:layout_marginEnd="8dp" 
      tools:layout_editor_absoluteY="8dp" 
      tools:layout_editor_absoluteX="1dp"> 
     </RelativeLayout> 

     <RelativeLayout 
      android:id="@+id/bottom_row_fragment_container" 
      android:layout_width="367dp" 
      android:layout_height="wrap_content" 
      android:layout_marginStart="8dp" 
      android:layout_marginEnd="8dp" 
      tools:layout_editor_absoluteY="8dp" 
      tools:layout_editor_absoluteX="1dp"> 
     </RelativeLayout> 



    </android.support.constraint.ConstraintLayout> 

    <android.support.constraint.ConstraintLayout 
     android:layout_width="wrap_content" 
     android:layout_height="wrap_content" 
     android:layout_marginTop="8dp" 
     app:layout_constraintTop_toBottomOf="@+id/constraintLayout" 
     android:layout_marginLeft="8dp" 
     app:layout_constraintLeft_toLeftOf="parent" 
     android:layout_marginRight="8dp" 
     app:layout_constraintRight_toRightOf="parent"> 

     <RelativeLayout 
      android:id="@+id/second_Row_container" 
      android:layout_width="wrap_content" 
      android:layout_height="wrap_content" 
      android:layout_marginEnd="8dp" 
      android:layout_marginLeft="6dp" 
      android:layout_marginRight="8dp" 
      android:layout_marginStart="8dp" 
      app:layout_constraintLeft_toLeftOf="parent" 
      app:layout_constraintRight_toRightOf="parent" 
      tools:layout_editor_absoluteY="25dp"> 

     </RelativeLayout> 
    </android.support.constraint.ConstraintLayout> 

</android.support.constraint.ConstraintLayout> 

firstrow_fragment

<?xml version="1.0" encoding="utf-8"?><RelativeLayout xmlns:android="http://schemas.android.com/apk/res/android" 
android:id="@+id/parent_row_container" 
xmlns:app="http://schemas.android.com/apk/res-auto" 
xmlns:tools="http://schemas.android.com/tools" 
android:orientation="horizontal" 
android:layout_width="wrap_content" 
android:layout_height="wrap_content" 
tools:context="com.example.bryanjordan.nestedfragmentstest.MainActivity"> 

<android.support.constraint.ConstraintLayout 
    android:layout_width="match_parent" 
    android:layout_height="wrap_content"> 

    <android.support.v7.widget.CardView 
     android:id="@+id/cardTop" 
     android:layout_width="340dp" 
     android:layout_height="80dp" 
     android:layout_margin="5dp" 
     android:layout_marginLeft="8dp" 
     android:layout_marginRight="8dp" 
     android:layout_marginTop="3dp" 
     android:elevation="5dp" 
     app:cardCornerRadius="5dp" 
     app:contentPadding="5dp" 
     app:layout_constraintLeft_toLeftOf="parent" 
     app:layout_constraintRight_toRightOf="parent" 
     app:layout_constraintTop_toTopOf="parent" 
     app:layout_goneMarginLeft="5dp" 
     app:layout_goneMarginRight="5dp" 
     android:layout_marginStart="8dp" 
     android:layout_marginEnd="8dp"> 

     <android.support.constraint.ConstraintLayout 
      android:layout_width="wrap_content" 
      android:layout_height="wrap_content" 
      android:orientation="horizontal" 
      android:paddingLeft="5dp" 
      android:paddingRight="5dp"> 

      <ImageButton 
       android:id="@+id/imageLeft" 
       android:layout_width="60dp" 
       android:layout_height="60dp" 
       android:layout_marginBottom="8dp" 
       android:layout_marginLeft="8dp" 
       android:layout_marginStart="8dp" 
       android:layout_marginTop="8dp" 
       android:adjustViewBounds="true" 
       android:background="@drawable/square" 
       android:clickable="true" 
       android:scaleType="centerCrop" 
       app:layout_constraintBottom_toBottomOf="parent" 
       app:layout_constraintLeft_toLeftOf="parent" 
       app:layout_constraintTop_toTopOf="parent" /> 

      <ImageView 
       android:id="@+id/imageCentre" 
       android:layout_width="60dp" 
       android:layout_height="60dp" 
       android:layout_marginBottom="8dp" 
       android:layout_marginLeft="13dp" 
       android:layout_marginStart="13dp" 
       android:layout_marginTop="8dp" 
       android:background="@drawable/square" 
       android:clickable="true" 
       android:scaleType="centerCrop" 
       app:layout_constraintBottom_toBottomOf="parent" 
       app:layout_constraintLeft_toRightOf="@+id/imageLeft" 
       app:layout_constraintTop_toTopOf="parent" /> 

      <ImageView 
       android:id="@+id/imageRight" 
       android:layout_width="60dp" 
       android:layout_height="60dp" 
       android:layout_marginBottom="8dp" 
       android:layout_marginLeft="13dp" 
       android:layout_marginStart="13dp" 
       android:layout_marginTop="8dp" 
       android:background="@drawable/square" 
       android:clickable="true" 
       android:scaleType="centerCrop" 
       app:layout_constraintBottom_toBottomOf="parent" 
       app:layout_constraintLeft_toRightOf="@+id/imageCentre" 
       app:layout_constraintTop_toTopOf="parent" /> 
     </android.support.constraint.ConstraintLayout> 


    </android.support.v7.widget.CardView> 


</android.support.constraint.ConstraintLayout> 

addressCard

<?xml version="1.0" encoding="utf-8"?><RelativeLayout xmlns:android="http://schemas.android.com/apk/res/android" 
android:id="@+id/address_card_container" 
xmlns:app="http://schemas.android.com/apk/res-auto" 
xmlns:tools="http://schemas.android.com/tools" 
android:orientation="horizontal" 
android:layout_width="match_parent" 
android:layout_height="wrap_content" 
tools:context="com.example.bryanjordan.nestedfragmentstest.MainActivity"> 

<android.support.constraint.ConstraintLayout 
    android:layout_width="match_parent" 
    android:layout_height="wrap_content"> 

    <android.support.v7.widget.CardView 
     android:id="@+id/years_of_cooking_xp_cardView" 
     android:layout_width="337dp" 
     android:layout_height="240dp" 
     android:layout_margin="5dp" 
     android:layout_marginLeft="8dp" 
     android:layout_marginRight="8dp" 
     android:elevation="50dp" 
     app:cardCornerRadius="5dp" 
     app:contentPadding="5dp" 
     app:layout_constraintLeft_toLeftOf="parent" 
     app:layout_constraintRight_toRightOf="parent" 
     app:layout_goneMarginLeft="5dp" 
     app:layout_goneMarginRight="5dp" 
     android:layout_marginStart="8dp" 
     android:layout_marginEnd="8dp" 
     tools:layout_editor_absoluteY="20dp"> 
     <android.support.constraint.ConstraintLayout 
      android:layout_width="match_parent" 
      android:layout_height="match_parent" 
      android:orientation="horizontal" 
      android:paddingLeft="5dp" 
      android:paddingRight="5dp"> 

      <TextView 
       android:id="@+id/textView" 
       android:layout_width="wrap_content" 
       android:layout_height="wrap_content" 
       android:layout_marginLeft="8dp" 
       android:layout_marginRight="8dp" 
       android:layout_marginTop="8dp" 
       android:text="Test" 
       android:textAlignment="center" 
       app:layout_constraintLeft_toLeftOf="parent" 
       app:layout_constraintRight_toRightOf="parent" 
       app:layout_constraintTop_toTopOf="parent" /> 

      <ImageButton 
       android:id="@+id/experience_left_button" 
       android:layout_width="60dp" 
       android:layout_height="60dp" 
       android:layout_marginRight="40dp" 
       android:layout_marginTop="8dp" 
       android:adjustViewBounds="true" 
       android:background="@drawable/square" 
       android:clickable="true" 
       android:scaleType="centerCrop" 
       app:layout_constraintRight_toLeftOf="@+id/experience_centre_button" 
       app:layout_constraintTop_toBottomOf="@+id/textView" /> 

      <ImageButton 
       android:id="@+id/experience_centre_button" 
       android:layout_width="60dp" 
       android:layout_height="60dp" 
       android:layout_marginLeft="8dp" 
       android:layout_marginRight="8dp" 
       android:layout_marginTop="8dp" 
       android:adjustViewBounds="true" 
       android:background="@drawable/square" 
       android:clickable="true" 
       android:scaleType="centerCrop" 
       app:layout_constraintLeft_toLeftOf="parent" 
       app:layout_constraintRight_toRightOf="parent" 
       app:layout_constraintTop_toBottomOf="@+id/textView" 
       app:layout_constraintHorizontal_bias="0.498" /> 

      <ImageButton 
       android:id="@+id/experience_right_button" 
       android:layout_width="60dp" 
       android:layout_height="60dp" 
       android:layout_marginLeft="40dp" 
       android:layout_marginTop="8dp" 
       android:adjustViewBounds="true" 
       android:background="@drawable/square" 
       android:clickable="true" 
       android:scaleType="centerCrop" 
       app:layout_constraintLeft_toRightOf="@+id/experience_centre_button" 
       app:layout_constraintTop_toBottomOf="@+id/textView" /> 

      <TextView 
       android:id="@+id/zero_to_one_Year" 
       android:layout_width="40dp" 
       android:layout_height="wrap_content" 
       android:layout_marginBottom="8dp" 
       android:layout_marginLeft="8dp" 
       android:layout_marginRight="8dp" 
       android:layout_marginTop="8dp" 
       android:text="0 - 1 Year" 
       android:textAlignment="center" 
       app:layout_constraintBottom_toBottomOf="@+id/experience_left_button" 
       app:layout_constraintLeft_toLeftOf="@+id/experience_left_button" 
       app:layout_constraintRight_toRightOf="@+id/experience_left_button" 
       app:layout_constraintTop_toTopOf="@+id/experience_left_button" /> 

      <TextView 
       android:id="@+id/one_to_three_years" 
       android:layout_width="40dp" 
       android:layout_height="wrap_content" 
       android:text="1 - 3 Years" 
       android:textAlignment="center" 
       android:layout_marginBottom="8dp" 
       android:layout_marginLeft="8dp" 
       android:layout_marginRight="8dp" 
       android:layout_marginTop="8dp" 
       app:layout_constraintBottom_toBottomOf="@+id/experience_centre_button" 
       app:layout_constraintLeft_toLeftOf="@+id/experience_centre_button" 
       app:layout_constraintRight_toRightOf="@+id/experience_centre_button" 
       app:layout_constraintTop_toTopOf="@+id/experience_centre_button" 
       /> 

      <TextView 
       android:id="@+id/three_plus_years" 
       android:layout_width="40dp" 
       android:layout_height="wrap_content" 
       android:text="3+ Years" 
       android:textAlignment="center" 
       android:layout_marginBottom="8dp" 
       android:layout_marginLeft="8dp" 
       android:layout_marginRight="8dp" 
       android:layout_marginTop="8dp" 
       app:layout_constraintBottom_toBottomOf="@+id/experience_right_button" 
       app:layout_constraintLeft_toLeftOf="@+id/experience_right_button" 
       app:layout_constraintRight_toRightOf="@+id/experience_right_button" 
       app:layout_constraintTop_toTopOf="@+id/experience_right_button" 
       /> 

     </android.support.constraint.ConstraintLayout> 


    </android.support.v7.widget.CardView> 

</android.support.constraint.ConstraintLayout> 

Répondre

2

deux vos top_row_fragment_container et bottom_row_fragment_container conteneurs sont en MainActivity. Alors ce n'est pas un fragment imbriqué.

fragment Nested signifie Fragment Fragment intérieur.

Vous avez wrap_content comme hauteur de conteneur.

android:layout_height="wrap_content" 

Définissez une hauteur pour obtenir les deux de votre fragment visible.

Enlever layoutReturn.setVisibility(View.INVISIBLE); de votre code.

+0

j'utilisais getChildFragmentManager() à l'origine, mais gardé face à une erreur très grand - je rajouterais le rapport d'erreur dans le poste. – Hews

+0

pouvez-vous poster votre ** topRow_fragment ** XML –

+0

Ajout de tous les fichiers XML, merci pour votre aide! – Hews

1

Solution

Tout d'abord, grâce à Bhuvanesh B et JRamesh pour leur aide.

Pour ceux face à un problème similaire, je vous recommande l'examen rapidement les éléments suivants:

  1. Assurez-vous initialisant votre fragment enfant dans un autre fragment. Bien que Bhuvanesh ait recommandé de ne pas déplacer un objet FrameLayout dans le fragment parent, j'ai trouvé que cela fonctionnait. Malheureusement, le fragment enfant était en cours d'initialisation dans CardView du fragment parent.
  2. visibilité Basculement a été résolu en référençant le récipient du fragment d'enfant qui était le FrameLayout ajouté au fragment parent comme indiqué au point 1.
  3. En ce qui concerne basculer la visibilité de layoutReturn Je pense que c'était parce que je rentrais layoutReturn sans mettre à jour les modifications. Ceci explique pourquoi sans aucun ajout, l'activité deviendrait vide. Cependant, une fois le nouveau fragment ajouté, la mise en page change et la modification de la visibilité de la mise en page est donc un appel désormais obsolète. Doit être noté, je ne suis pas confiant avec cette réponse alors s'il vous plaît le prendre avec un grain de sel.

Vive