Ajouter un layout lors d'un click
Résolu
lamouchetsetse
Messages postés
112
Date d'inscription
Statut
Membre
Dernière intervention
-
lamouchetsetse Messages postés 112 Date d'inscription Statut Membre Dernière intervention -
lamouchetsetse Messages postés 112 Date d'inscription Statut Membre Dernière intervention -
Bonjour à tous, étant débutant sur android, ja'ai un peu de mal à comprendre pourquoi certaine chose de fonctionne pas comme je voudrais.
J'ai créer un linear-layout dans mes ressource et je souhaite insérer ce dernier lors d'un évènement clic, mais malheureusement mon code fait planté l’application.
voici le linear_layout:
le activity_main:
et le java:
du coup, dés que je click sur le bouton du milieu, l'appli plante.
Merci pour coup de main.
J'ai créer un linear-layout dans mes ressource et je souhaite insérer ce dernier lors d'un évènement clic, mais malheureusement mon code fait planté l’application.
voici le linear_layout:
<?xml version="1.0" encoding="utf-8"?> <LinearLayout xmlns:android="http://schemas.android.com/apk/res/android" android:orientation="horizontal" android:layout_width="50dp" android:layout_height="50dp" android:background="@color/anim_linear" android:id="@+id/anim_linear" android:name="anim_linear"> </LinearLayout>
le activity_main:
<?xml version="1.0" encoding="utf-8"?> <RelativeLayout xmlns:android="http://schemas.android.com/apk/res/android" android:orientation="horizontal" android:layout_width="fill_parent" android:layout_height="fill_parent" android:background="@color/fondPrincipal" android:id="@+id/layoutPrincipal"> <Button style="@style/bouton" android:id="@+id/boutonMillieu" android:text="@string/cliquezMoi2"/> </RelativeLayout>
et le java:
package fr.test; import android.os.Bundle; import android.view.View; import android.widget.Button; import android.widget.LinearLayout; import android.widget.RelativeLayout; import androidx.appcompat.app.AppCompatActivity; public class MainActivity extends AppCompatActivity { private RelativeLayout layoutPrincipal; private LinearLayout animLinear; protected void onCreate(Bundle savedInstanceState) { super.onCreate(savedInstanceState); setContentView(R.layout.activity_main); layoutPrincipal = findViewById(R.id.layoutPrincipal); Button boutonMillieu = findViewById(R.id.boutonMillieu); boutonMillieu.setOnClickListener(new ClickBoutonMillieu()); } class ClickBoutonMillieu implements View.OnClickListener { @Override public void onClick(View v) { //animLinear = (LinearLayout) findViewById(R.id.anim_linear); animLinear = (LinearLayout) getResources().getLayout(R.layout.anim_linear); layoutPrincipal.addView(animLinear); } } }
du coup, dés que je click sur le bouton du milieu, l'appli plante.
Merci pour coup de main.
Configuration: Linux / Firefox 78.0
A voir également:
- Ajouter un layout lors d'un click
- Ajouter un profil netflix payant - Accueil - Guide streaming
- Microsoft keyboard layout creator - Télécharger - Bureautique
- Impossible d'ajouter un ami sur facebook - Guide
- Ajouter un compte whatsapp - Guide
- Ajouter un compte facebook - Guide
3 réponses
Hello,
Ce n'est pas comme ceci que l'on récupère une View à partir d'une ressource de type Layout. Il faut utiliser LayoutInflater
Ce n'est pas comme ceci que l'on récupère une View à partir d'une ressource de type Layout. Il faut utiliser LayoutInflater
final LayoutInflater inflater = (LayoutInflater)getSystemService(Context.LAYOUT_INFLATER_SERVICE); LinearLayout linearLayout = (LinearLayout)inflater.inflate(R.layout.anim_linear, null);
Merci pour la réponse rapide, cependant, comment doit on procéder pour ajouter le layout une fois qu'on l'a récupéré., j'ai bien tenté un addView(linearLyout) mais rien ne s'ajoute lors du clic
class ClickBoutonMillieu implements View.OnClickListener { @Override public void onClick(View v) { final LayoutInflater inflater = (LayoutInflater)getSystemService(Context.LAYOUT_INFLATER_SERVICE); LinearLayout linearLayout = (LinearLayout)inflater.inflate(R.layout.anim_linear, null); layoutPrincipal.addView(linearLayout); } }
Bien, je pense avoir trouvé la "bonne" façon de faire.
j'ai remplacer cette ligne:
par:
maintenant ça fonctionne.
Merci de m'avoir mis sur la bonne voie
j'ai remplacer cette ligne:
LinearLayout linearLayout = (LinearLayout)inflater.inflate(R.layout.anim_linear, null);
par:
LinearLayout linearLayout = (LinearLayout)inflater.inflate(R.layout.anim_linear, layoutPrincipal, false);
maintenant ça fonctionne.
Merci de m'avoir mis sur la bonne voie