2017-07-31 5 views
1

Dans mon application, j'ai utiliser Framelayout et j'ajoute une vue autocollant dans FrameLayout. avant d'ajouter l'affichage de l'autocollant comment enregistrer Framelayout déjà ajouté ou non.Android comment enregistrer dans FrameLayout déjà afficher ajouter ou non

Dans mon erreur d'application show comme ci-dessous

java.lang.IllegalStateException: The specified child already has a parent. 

j'ai ajouter StickerTextView adaptateur RecyclerView itemView OnClickListener comme ci-dessous:

itemView.setOnClickListener(new View.OnClickListener() 
     { 
      @Override 
      public void onClick(View v) 
      { 
       tv_sticker.setText(""+ staticData.greetings); 
       canvas.addView(tv_sticker); 
      } 
     }); 
+0

Pouvez-vous s'il vous plaît ajouter votre code où vous ajoutez votre vue d'autocollant à la disposition du cadre? –

+0

Vous pouvez vérifier si l'élément de vue qui sera les enfants a un parent utilisant view.getParent(). Cochez cette question: https://stackoverflow.com/questions/17721991/check-if-view-element-is-added-to-layout-or-not-programmatically – smukamuka

Répondre

0

J'ai résoudre l'erreur en utilisant la méthode removeAllViews() avant l'ajout comme le soufflet :

itemView.setOnClickListener(new View.OnClickListener() 
    { 
     @Override 
     public void onClick(View v) 
     { 
      tv_sticker.setText(""+ staticData.greetings); 
      canvas.removeAllViews(); 
      canvas.addView(tv_sticker); 
     } 
    }); 
0

Vous pouvez utiliser avant d'ajouter la vue:

if(stickerView.getParent() instanceof ViewGroup) { 
    ((ViewGroup)stickerView.getParent()).removeView(stickerView); 
} 
frameLayout.addView(stickerView);