L'attribut AlignParentRight à l'aide de Programmatically set dans RelativeLayout ne fonctionne pas?

J'essaie de programmer automatiquement l'attribut AlignParentRight sur le bouton RelativeLayout mais le programme se bloque avec une NullPointerException. Voici mon code:

//add horizontal realative layout RelativeLayout layouth = new RelativeLayout(this); layouth.setLayoutParams(new RelativeLayout.LayoutParams( LayoutParams.WRAP_CONTENT, LayoutParams.WRAP_CONTENT)); //add textview for label TextView t = new TextView(this); t.setText(d.getName()); t.setTextSize(25); t.setId(2); t.setLayoutParams(new RelativeLayout.LayoutParams( LayoutParams.WRAP_CONTENT, LayoutParams.WRAP_CONTENT)); //add button Button b = new Button(this); b.setText(d.getName()); RelativeLayout.LayoutParams layoutParams =(RelativeLayout.LayoutParams)b.getLayoutParams(); layoutParams.addRule(RelativeLayout.ALIGN_PARENT_RIGHT); layoutParams.addRule(RelativeLayout.LEFT_OF, 2); b.setLayoutParams(layoutParams); //add textview and button to horizontal linear layout layouth.addView(t); layouth.addView(b); //add horizontal linear layout to vertical linear layout layoutv = (LinearLayout) findViewById(R.id.ProjectViewLinearID); layoutv.addView(layouth); 

Où est mon problème? L'erreur se produit dans la ligne de programme layoutParams.addRule(RelativeLayout.ALIGN_PARENT_RIGHT);

  • Commande shell adb pour faire apparaître la boîte de dialogue de désinstallation du package Android
  • Android tools r17 x86 emulator - Pourquoi ne puis-je pas créer un AVD x86?
  • (ANDROID) contrôlant la langue de l'utilisateur
  • Android "gps requiert ACCESS_FINE_LOCATION" erreur, même si mon fichier manifeste contient cette
  • Avertissement OnTouchListener: onTouch devrait appeler View # performClick quand un clic est détecté
  • Android sauvegardant le fichier sur le stockage externe
  • MISE À JOUR AVEC SOLUTION:

    Ce code fonctionne pour moi:

     // Creating a new RelativeLayout RelativeLayout layouth = new RelativeLayout(this); // Defining the RelativeLayout layout parameters. // In this case I want to fill its parent RelativeLayout.LayoutParams rlp = new RelativeLayout.LayoutParams( RelativeLayout.LayoutParams.MATCH_PARENT, RelativeLayout.LayoutParams.MATCH_PARENT); // Creating a new TextView TextView tv = new TextView(this); tv.setText(d.getName()); tv.setTextSize(25); //add button Button b = new Button(this); b.setText(d.getName()); // Defining the layout parameters of the TextView RelativeLayout.LayoutParams lp = new RelativeLayout.LayoutParams( RelativeLayout.LayoutParams.WRAP_CONTENT, RelativeLayout.LayoutParams.WRAP_CONTENT); lp.addRule(RelativeLayout.ALIGN_PARENT_RIGHT); // Setting the parameters on the TextView tv.setLayoutParams(lp); b.setLayoutParams(lp); // Adding the TextView to the RelativeLayout as a child layouth.addView(tv); layouth.addView(b); 

  • Comment utiliser layout_aspectRatio dans PercentRelativeLayout?
  • Soft Keyboard cache la barre d'action
  • Empreinte de certificat SHA1
  • Comment transférer la chaîne de date mise en forme à partir de mon DatePickerFragment?
  • Correction rapide pour NetworkOnMainThreadException
  • Puis-je avoir le comportement du clavier doux "adjustResize" et une barre d'outils derrière la barre d'état en même temps?
  • 2 Solutions collect form web for “L'attribut AlignParentRight à l'aide de Programmatically set dans RelativeLayout ne fonctionne pas?”

    Lorsque vous appelez b.getLayoutParams() , b n'est pas dans une mise en page. Par conséquent, il n'a pas de layoutparams (plus, il ne saurait pas que vous attendez un RelativeLayout.LayoutParams à ce stade).

    Vous devez créer une nouvelle instance LayoutParams, comme vous l'avez fait pour TextView.

    remplacer

     RelativeLayout.LayoutParams layoutParams =(RelativeLayout.LayoutParams)b.getLayoutParams(); 

    avec

     RelativeLayout.LayoutParams layoutParams = new RelativeLayout.LayoutParams( RelativeLayout.LayoutParams.MATCH_PARENT, RelativeLayout.LayoutParams.WRAP_CONTENT); 
    coAndroid est un fan Android de Google, tout sur les téléphones Android, Android Wear, Android Dev et Android Games Apps.