0

Je souhaite ajouter deux fragments lorsque l'appareil est en mode tablette (paysage). Mais je reçois l'erreur suivante: java.lang.IllegalArgumentException: Pas de vue trouvée pour id 0x7f0d006d (com.example.placesearch1: id/container2) pour le fragment FragMapjava.lang.IllegalArgumentException: Aucune vue trouvée pour l'ID 0x7f0d006d

J'ai créé deux dispositions: main_activity (pour téléphone) :

<FrameLayout 
     android:id="@+id/container1" 
     android:layout_width="match_parent" 
     android:layout_height="match_parent" 
     android:layout_centerHorizontal="true"> 

    </FrameLayout> 

et main_activity (pour le paysage comprimé - activity_main.xml (sw600dp terre):

<LinearLayout 
     android:layout_width="match_parent" 
     android:layout_height="match_parent" 
     android:orientation="horizontal" 
     android:layout_alignParentTop="true" 
     android:layout_alignParentLeft="true" 
     android:layout_alignParentStart="true" 
     > 


    <FrameLayout 
     android:id="@+id/container1" 
     android:layout_width="match_parent" 
     android:layout_height="match_parent" 
     android:layout_weight="1"> 

    </FrameLayout> 

    <FrameLayout 
     android:id="@+id/container2" 
     android:layout_width="match_parent" 
     android:layout_height="match_parent" 
     android:layout_weight="1"> 

    </FrameLayout> 
    </LinearLayout> 

Je RecycleView des places (disposition de l'activité principale dans le conteneur 1). Quand je clique sur l'élément, j'obtiens la latitude et la longitude d'un lieu et passe les valeurs avec le paquet au fragment Map et place la carte dans l'un des conteneurs: if device is phone alors dans container1, mais si device est tablet puis container2 .

Si l'appareil est un téléphone, il fonctionne parfaitement, mais si l'appareil est une tablette, j'obtiens une erreur.

dans la méthode GetPlace:

Bundle bundle = new Bundle(); 
     bundle.putDouble("lat", place.getLat()); 
     bundle.putDouble("lng", place.getLng()); 
     FragMap fragMap = new FragMap(); 
     fragMap.setArguments(bundle); 

     if(getResources().getBoolean(R.bool.isTab)) { 

      getSupportFragmentManager().beginTransaction() 
      .replace(R.id.container1, new ListFragment()) 
      .replace(R.id.container2, fragMap) 
      .addToBackStack(null) 
      .commit(); 


     } 
     else { 

      getSupportFragmentManager().beginTransaction() 
      .replace(R.id.container1, fragMap) 
      .addToBackStack(null) 
      .commit(); 
     } 

Répondre

1

généralement lorsque vous concevez le xml pour téléphone ou tablette le fichier doit être identique et aussi dans les deux xml la le contenu devrait être le même. Mais ici dans votre cas pour le téléphone il n'y a qu'un framelayout mais pour tablette pourquoi deux framelayout

0

Retirez cette ligne de méthode GetPlace

.replace(R.id.container1, new ListFragment())