IdentifiantMot de passe
Loading...
Mot de passe oublié ?Je m'inscris ! (gratuit)
Navigation

Inscrivez-vous gratuitement
pour pouvoir participer, suivre les réponses en temps réel, voter pour les messages, poser vos propres questions et recevoir la newsletter

Composants graphiques Android Discussion :

Comment modifier par code son layout


Sujet :

Composants graphiques Android

  1. #1
    Membre du Club
    Profil pro
    Hhh
    Inscrit en
    Septembre 2007
    Messages
    62
    Détails du profil
    Informations personnelles :
    Localisation : France, Moselle (Lorraine)

    Informations professionnelles :
    Activité : Hhh

    Informations forums :
    Inscription : Septembre 2007
    Messages : 62
    Points : 42
    Points
    42
    Par défaut Comment modifier par code son layout
    bonjour

    pour construire de beaux tableaux j'ai voulu prendre l'exellent exemple sur le code qu'on trouve ici :

    http://javamind-fr.blogspot.fr/2012/...u-comment.html

    et j'ai donc commencé à modifier mon code java comme ça :

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    14
    15
    16
    17
    18
    19
    20
    21
    22
    23
    24
    25
    26
    27
    28
    29
    30
    31
    32
    33
    package chauffagiste.mobile;
     
    import android.app.Activity;
    import android.content.Context;
    import android.content.Intent;
    import android.os.Bundle;
    import android.view.View;
    import android.widget.TableLayout;
    import android.widget.TableRow;
    import android.widget.TextView;
    import android.widget.TableRow.LayoutParams;
     
     
    //public class TableJavaFragment extends Fragment { 
     
    public class CalcultableCompteurGaz extends Activity {
     
    	private TableLayout containerTable;	
     
    	@Override
    	protected void onCreate(Bundle savedInstanceState) {
    		// TODO Auto-generated method stub
    		super.onCreate(savedInstanceState);
    		setContentView(R.layout.newfile);
    		containerTable = (TableLayout) findViewById(R.id.containerTable);
    		// Recuperation du table layout sur lequel nous allons agir
    		String[] players = getResources().getStringArray(R.array.CompteurGaz);	
     
    // Ca plante ici !!!!!	
    		TableRow tableRow = new TableRow(getActivity());
     
     
    	    }

    et voila le retour sur l'erreur :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    01-03 07:57:37.066: E/AndroidRuntime(1144): FATAL EXCEPTION: main 01-03 07:57:37.066: E/AndroidRuntime(1144): java.lang.RuntimeException: Unable to start activity ComponentInfo{chauffagiste.mobile/chauffagiste.mobile.CalcultableCompteurGaz}: java.lang.NullPointerException 01-03 07:57:37.066: E/AndroidRuntime(1144): 	at android.app.ActivityThread.performLaunchActivity(ActivityThread.java:1956) 01-03 07:57:37.066: E/AndroidRuntime(1144): 	at android.app.ActivityThread.handleLaunchActivity(ActivityThread.java:1981) 01-03 07:57:37.066: E/AndroidRuntime(1144): 	at android.app.ActivityThread.access$600(ActivityThread.java:123) 01-03 07:57:37.066: E/AndroidRuntime(1144): 	at android.app.ActivityThread$H.handleMessage(ActivityThread.java:1147) 01-03 07:57:37.066: E/AndroidRuntime(1144): 	at android.os.Handler.dispatchMessage(Handler.java:99) 01-03 07:57:37.066: E/AndroidRuntime(1144): 	at android.os.Looper.loop(Looper.java:137) 01-03 07:57:37.066: E/AndroidRuntime(1144): 	at android.app.ActivityThread.main(ActivityThread.java:4424) 01-03 07:57:37.066: E/AndroidRuntime(1144): 	at java.lang.reflect.Method.invokeNative(Native Method) 01-03 07:57:37.066: E/AndroidRuntime(1144): 	at java.lang.reflect.Method.invoke(Method.java:511) 01-03 07:57:37.066: E/AndroidRuntime(1144): 	at com.android.internal.os.ZygoteInit$MethodAndArgsCaller.run(ZygoteInit.java:784) 01-03 07:57:37.066: E/AndroidRuntime(1144): 	at com.android.internal.os.ZygoteInit.main(ZygoteInit.java:551) 01-03 07:57:37.066: E/AndroidRuntime(1144): 	at dalvik.system.NativeStart.main(Native Method) 01-03 07:57:37.066: E/AndroidRuntime(1144): Caused by: java.lang.NullPointerException 01-03 07:57:37.066: E/AndroidRuntime(1144): 	at android.view.ViewConfiguration.get(ViewConfiguration.java:331)
    pouvez vous m"aider please ?

    merci d'avance

  2. #2
    Jay
    Jay est déconnecté
    Membre habitué
    Profil pro
    Inscrit en
    Juin 2002
    Messages
    124
    Détails du profil
    Informations personnelles :
    Localisation : France, Gironde (Aquitaine)

    Informations forums :
    Inscription : Juin 2002
    Messages : 124
    Points : 189
    Points
    189
    Par défaut
    Bonjour,

    Essaye plutôt :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    TableRow tr = new TableRow(this);
    Si vous jugez mon post utile dans la résolution de votre problème, n'hésitez pas à utiliser le système de vote afin d'améliorer la qualité du forum

  3. #3
    Membre du Club
    Profil pro
    Hhh
    Inscrit en
    Septembre 2007
    Messages
    62
    Détails du profil
    Informations personnelles :
    Localisation : France, Moselle (Lorraine)

    Informations professionnelles :
    Activité : Hhh

    Informations forums :
    Inscription : Septembre 2007
    Messages : 62
    Points : 42
    Points
    42
    Par défaut
    merci
    ca a corrigé une partie du probleme

    maintenant la suite :

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    14
    15
    16
    17
    18
    19
    20
    21
    22
    23
    24
    25
    26
    27
    28
    29
    30
    31
    32
    33
    34
    35
    36
    package chauffagiste.mobile;
     
     
    import android.app.Activity;
    import android.content.Context;
    import android.content.Intent;
    import android.os.Bundle;
    import android.view.View;
    import android.widget.Button;
    import android.widget.TableLayout;
    import android.widget.TableRow;
    import android.widget.TextView;
    import android.widget.TableRow.LayoutParams;
     
     
    //public class TableJavaFragment extends Fragment { 
     
    public class CalcultableCompteurGaz extends Activity {
     
    	private TableLayout containerTable;	
     
    	@Override
    	protected void onCreate(Bundle savedInstanceState) {
    		// TODO Auto-generated method stub
    		super.onCreate(savedInstanceState);
    		setContentView(R.layout.newfile);
    		containerTable = (TableLayout) findViewById(R.id.containerTable);
    		// Recuperation du table layout sur lequel nous allons agir
    		String[] players = getResources().getStringArray(R.array.CompteurGaz);	
     
    		// on créer un nouveau tableau
    		TableRow tr = new TableRow(this);
    		containerTable.addView(tr);
    		containerTable.setBackgroundColor(getResources().getColor(R.color.grey));		
     
    	    }
    La ca plante maintenant à la ligne addViews(tr)

    because ??

  4. #4
    Jay
    Jay est déconnecté
    Membre habitué
    Profil pro
    Inscrit en
    Juin 2002
    Messages
    124
    Détails du profil
    Informations personnelles :
    Localisation : France, Gironde (Aquitaine)

    Informations forums :
    Inscription : Juin 2002
    Messages : 124
    Points : 189
    Points
    189
    Par défaut
    Slt,

    Si tu veux que je puisse t'aider, il faudrait la stacktrace ;-) "ça plante" ne m'aide pas vraiment....
    Si vous jugez mon post utile dans la résolution de votre problème, n'hésitez pas à utiliser le système de vote afin d'améliorer la qualité du forum

  5. #5
    Jay
    Jay est déconnecté
    Membre habitué
    Profil pro
    Inscrit en
    Juin 2002
    Messages
    124
    Détails du profil
    Informations personnelles :
    Localisation : France, Gironde (Aquitaine)

    Informations forums :
    Inscription : Juin 2002
    Messages : 124
    Points : 189
    Points
    189
    Si vous jugez mon post utile dans la résolution de votre problème, n'hésitez pas à utiliser le système de vote afin d'améliorer la qualité du forum

  6. #6
    Membre du Club
    Profil pro
    Hhh
    Inscrit en
    Septembre 2007
    Messages
    62
    Détails du profil
    Informations personnelles :
    Localisation : France, Moselle (Lorraine)

    Informations professionnelles :
    Activité : Hhh

    Informations forums :
    Inscription : Septembre 2007
    Messages : 62
    Points : 42
    Points
    42
    Par défaut
    oui bien sur

    le voila

    01-03 14:48:56.173: E/AndroidRuntime(1468): FATAL EXCEPTION: main
    01-03 14:48:56.173: E/AndroidRuntime(1468): java.lang.ArithmeticException: divide by zero
    01-03 14:48:56.173: E/AndroidRuntime(1468): at android.widget.TableLayout.mutateColumnsWidth(TableLayout.java:579)
    01-03 14:48:56.173: E/AndroidRuntime(1468): at android.widget.TableLayout.shrinkAndStretchColumns(TableLayout.java:568)
    01-03 14:48:56.173: E/AndroidRuntime(1468): at android.widget.TableLayout.measureVertical(TableLayout.java:466)
    01-03 14:48:56.173: E/AndroidRuntime(1468): at android.widget.TableLayout.onMeasure(TableLayout.java:431)
    01-03 14:48:56.173: E/AndroidRuntime(1468): at android.view.View.measure(View.java:12723)
    01-03 14:48:56.173: E/AndroidRuntime(1468): at android.view.ViewGroup.measureChildWithMargins(ViewGroup.java:4698)
    01-03 14:48:56.173: E/AndroidRuntime(1468): at android.widget.LinearLayout.measureChildBeforeLayout(LinearLayout.java:1369)
    01-03 14:48:56.173: E/AndroidRuntime(1468): at android.widget.LinearLayout.measureVertical(LinearLayout.java:660)
    01-03 14:48:56.173: E/AndroidRuntime(1468): at android.widget.LinearLayout.onMeasure(LinearLayout.java:553)
    01-03 14:48:56.173: E/AndroidRuntime(1468): at android.view.View.measure(View.java:12723)
    01-03 14:48:56.173: E/AndroidRuntime(1468): at android.widget.ScrollView.measureChildWithMargins(ScrollView.java:1163)
    01-03 14:48:56.173: E/AndroidRuntime(1468): at android.widget.FrameLayout.onMeasure(FrameLayout.java:293)
    01-03 14:48:56.173: E/AndroidRuntime(1468): at android.widget.ScrollView.onMeasure(ScrollView.java:312)
    01-03 14:48:56.173: E/AndroidRuntime(1468): at android.view.View.measure(View.java:12723)
    01-03 14:48:56.173: E/AndroidRuntime(1468): at android.view.ViewGroup.measureChildWithMargins(ViewGroup.java:4698)
    01-03 14:48:56.173: E/AndroidRuntime(1468): at android.widget.LinearLayout.measureChildBeforeLayout(LinearLayout.java:1369)
    01-03 14:48:56.173: E/AndroidRuntime(1468): at android.widget.LinearLayout.measureVertical(LinearLayout.java:660)
    01-03 14:48:56.173: E/AndroidRuntime(1468): at android.widget.LinearLayout.onMeasure(LinearLayout.java:553)
    01-03 14:48:56.173: E/AndroidRuntime(1468): at android.view.View.measure(View.java:12723)
    01-03 14:48:56.173: E/AndroidRuntime(1468): at android.widget.LinearLayout.measureVertical(LinearLayout.java:812)
    01-03 14:48:56.173: E/AndroidRuntime(1468): at android.widget.LinearLayout.onMeasure(LinearLayout.java:553)
    01-03 14:48:56.173: E/AndroidRuntime(1468): at android.view.View.measure(View.java:12723)
    01-03 14:48:56.173: E/AndroidRuntime(1468): at android.view.ViewGroup.measureChildWithMargins(ViewGroup.java:4698)
    01-03 14:48:56.173: E/AndroidRuntime(1468): at android.widget.FrameLayout.onMeasure(FrameLayout.java:293)
    01-03 14:48:56.173: E/AndroidRuntime(1468): at android.view.View.measure(View.java:12723)
    01-03 14:48:56.173: E/AndroidRuntime(1468): at android.view.ViewGroup.measureChildWithMargins(ViewGroup.java:4698)
    01-03 14:48:56.173: E/AndroidRuntime(1468): at android.widget.LinearLayout.measureChildBeforeLayout(LinearLayout.java:1369)
    01-03 14:48:56.173: E/AndroidRuntime(1468): at android.widget.LinearLayout.measureVertical(LinearLayout.java:660)
    01-03 14:48:56.173: E/AndroidRuntime(1468): at android.widget.LinearLayout.onMeasure(LinearLayout.java:553)
    01-03 14:48:56.173: E/AndroidRuntime(1468): at android.view.View.measure(View.java:12723)
    01-03 14:48:56.173: E/AndroidRuntime(1468): at android.view.ViewGroup.measureChildWithMargins(ViewGroup.java:4698)
    01-03 14:48:56.173: E/AndroidRuntime(1468): at android.widget.FrameLayout.onMeasure(FrameLayout.java:293)
    01-03 14:48:56.173: E/AndroidRuntime(1468): at com.android.internal.policy.impl.PhoneWindow$DecorView.onMeasure(PhoneWindow.java:2092)
    01-03 14:48:56.173: E/AndroidRuntime(1468): at android.view.View.measure(View.java:12723)
    01-03 14:48:56.173: E/AndroidRuntime(1468): at android.view.ViewRootImpl.performTraversals(ViewRootImpl.java:1064)
    01-03 14:48:56.173: E/AndroidRuntime(1468): at android.view.ViewRootImpl.handleMessage(ViewRootImpl.java:2442)
    01-03 14:48:56.173: E/AndroidRuntime(1468): at android.os.Handler.dispatchMessage(Handler.java:99)
    01-03 14:48:56.173: E/AndroidRuntime(1468): at android.os.Looper.loop(Looper.java:137)
    01-03 14:48:56.173: E/AndroidRuntime(1468): at android.app.ActivityThread.main(ActivityThread.java:4424)
    01-03 14:48:56.173: E/AndroidRuntime(1468): at java.lang.reflect.Method.invokeNative(Native Method)
    01-03 14:48:56.173: E/AndroidRuntime(1468): at java.lang.reflect.Method.invoke(Method.java:511)
    01-03 14:48:56.173: E/AndroidRuntime(1468): at com.android.internal.os.ZygoteInit$MethodAndArgsCaller.run(ZygoteInit.java:784)
    01-03 14:48:56.173: E/AndroidRuntime(1468): at com.android.internal.os.ZygoteInit.main(ZygoteInit.java:551)
    01-03 14:48:56.173: E/AndroidRuntime(1468): at dalvik.system.NativeStart.main(Native Method)

  7. #7
    Jay
    Jay est déconnecté
    Membre habitué
    Profil pro
    Inscrit en
    Juin 2002
    Messages
    124
    Détails du profil
    Informations personnelles :
    Localisation : France, Gironde (Aquitaine)

    Informations forums :
    Inscription : Juin 2002
    Messages : 124
    Points : 189
    Points
    189
    Par défaut
    Je viens de faire un petit projet et chez moi cela fonctionne correctement...

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    14
    15
    16
    17
    18
    19
    20
    21
    22
    23
    24
    25
    26
    27
    28
    29
    30
    31
    32
    33
    34
    35
    36
    37
    38
    package com.example.test.jay.app;
     
    import android.app.Activity;
    import android.os.Bundle;
    import android.view.Menu;
    import android.widget.Button;
    import android.widget.TableLayout;
    import android.widget.TableRow;
    import android.widget.TableRow.LayoutParams;
     
    public class MainActivity extends Activity {
     
    	private TableLayout containerTable;	
     
    	@Override
    	protected void onCreate(Bundle savedInstanceState) {
     
    		super.onCreate(savedInstanceState);
    		setContentView(R.layout.activity_main);
    		containerTable = (TableLayout) findViewById(R.id.containerTable);
    		containerTable.setBackgroundColor(getResources().getColor(R.color.grey));	
     
    		TableRow tr = new TableRow(this);
     
     
    		Button b = new Button(this);
    		b.setText("Dynamic Button");
    		b.setLayoutParams(new LayoutParams(
    				LayoutParams.MATCH_PARENT,
    				LayoutParams.WRAP_CONTENT));
    		tr.addView(b);
     
    		containerTable.addView(tr);
     
     
     
    	}
    }
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    14
    <RelativeLayout xmlns:android="http://schemas.android.com/apk/res/android"
        xmlns:tools="http://schemas.android.com/tools"
        android:layout_width="match_parent"
        android:layout_height="match_parent"
        tools:context=".MainActivity" >
     
        <TableLayout
            android:id="@+id/containerTable"
            android:layout_width="wrap_content"
            android:layout_height="wrap_content"
            android:layout_marginTop="28dp" >
        </TableLayout>
     
    </RelativeLayout>
    Si vous jugez mon post utile dans la résolution de votre problème, n'hésitez pas à utiliser le système de vote afin d'améliorer la qualité du forum

  8. #8
    Membre du Club
    Profil pro
    Hhh
    Inscrit en
    Septembre 2007
    Messages
    62
    Détails du profil
    Informations personnelles :
    Localisation : France, Moselle (Lorraine)

    Informations professionnelles :
    Activité : Hhh

    Informations forums :
    Inscription : Septembre 2007
    Messages : 62
    Points : 42
    Points
    42
    Par défaut
    merci ,
    je viens d'essayer ton code et effectivement il fonctionne

    super

  9. #9
    Expert éminent

    Homme Profil pro
    Ingénieur systèmes et réseaux
    Inscrit en
    Février 2007
    Messages
    4 253
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Rhône (Rhône Alpes)

    Informations professionnelles :
    Activité : Ingénieur systèmes et réseaux
    Secteur : High Tech - Multimédia et Internet

    Informations forums :
    Inscription : Février 2007
    Messages : 4 253
    Points : 7 618
    Points
    7 618
    Billets dans le blog
    3
    Par défaut
    [Mode Perfectionniste On]

    En fait.... le mieux n'est pas de faire new TableRow(this)...

    Mais avoir 2 fichiers XML:
    1 premier qui contient le TableLayout
    1 second qui contient le TableRow (avec tous les paramètres éditables graphiquement, y compris d'éventuels styles & thèmes).

    Et dans le code:
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
     
    LayoutInflater inflater = getLayoutInflater();
    ... boucle ...
        TableRow row = (TableRow) inflater.inflate(R.layout.tableRowLayout,null);
        row.findViewById().setText(...);
        ...
        table.addView(row);
    ... fin boucle...
    En plus cela permettra de traduire tranquillement en d'autres langues / voir de modifier le layout "row" en fonction de la taille de l'écran.

    [Mode Perfectionniste Off]
    N'oubliez pas de cliquer sur mais aussi sur si un commentaire vous a été utile !
    Et surtout

  10. #10
    Membre du Club
    Profil pro
    Hhh
    Inscrit en
    Septembre 2007
    Messages
    62
    Détails du profil
    Informations personnelles :
    Localisation : France, Moselle (Lorraine)

    Informations professionnelles :
    Activité : Hhh

    Informations forums :
    Inscription : Septembre 2007
    Messages : 62
    Points : 42
    Points
    42
    Par défaut
    merci pour la réponse

    tu peux donner plus de détail , un exemple serait pas mal

  11. #11
    Membre du Club
    Profil pro
    Hhh
    Inscrit en
    Septembre 2007
    Messages
    62
    Détails du profil
    Informations personnelles :
    Localisation : France, Moselle (Lorraine)

    Informations professionnelles :
    Activité : Hhh

    Informations forums :
    Inscription : Septembre 2007
    Messages : 62
    Points : 42
    Points
    42
    Par défaut
    en fait je voudrais faire un tableau comme celui la :

    quelle est la meilleure méthode d'apres vous ?
    Images attachées Images attachées  

+ Répondre à la discussion
Cette discussion est résolue.

Discussions similaires

  1. Comment Modifier du code par du code
    Par Bronks59 dans le forum Macros et VBA Excel
    Réponses: 4
    Dernier message: 01/10/2008, 16h54
  2. Comment modifier par programmation une form crée lors de l'execution
    Par Fab.asia dans le forum VB 6 et antérieur
    Réponses: 1
    Dernier message: 31/07/2007, 14h47
  3. Comment modifier ce code javascript de quizz ?
    Par cynthiavn dans le forum Général JavaScript
    Réponses: 2
    Dernier message: 28/05/2007, 03h10
  4. Comment appeller par code le contenu d'une liste
    Par sakia dans le forum VBA Access
    Réponses: 3
    Dernier message: 26/05/2007, 19h50
  5. [VS] Comment modifier le code de Bibliotheque de classes ?
    Par DonJR dans le forum Visual Studio
    Réponses: 6
    Dernier message: 24/10/2006, 13h17

Partager

Partager
  • Envoyer la discussion sur Viadeo
  • Envoyer la discussion sur Twitter
  • Envoyer la discussion sur Google
  • Envoyer la discussion sur Facebook
  • Envoyer la discussion sur Digg
  • Envoyer la discussion sur Delicious
  • Envoyer la discussion sur MySpace
  • Envoyer la discussion sur Yahoo