Publicité
+ Répondre à la discussion
Affichage des résultats 1 à 11 sur 11
  1. #1
    Invité régulier
    Inscrit en
    septembre 2007
    Messages
    49
    Détails du profil
    Informations forums :
    Inscription : septembre 2007
    Messages : 49
    Points : 6
    Points
    6

    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 :
    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 :
    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 actif
    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 : 167
    Points
    167

    Par défaut

    Bonjour,

    Essaye plutôt :
    Code :
    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
    Invité régulier
    Inscrit en
    septembre 2007
    Messages
    49
    Détails du profil
    Informations forums :
    Inscription : septembre 2007
    Messages : 49
    Points : 6
    Points
    6

    Par défaut

    merci
    ca a corrigé une partie du probleme

    maintenant la suite :

    Code :
    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 actif
    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 : 167
    Points
    167

    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 actif
    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 : 167
    Points
    167
    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
    Invité régulier
    Inscrit en
    septembre 2007
    Messages
    49
    Détails du profil
    Informations forums :
    Inscription : septembre 2007
    Messages : 49
    Points : 6
    Points
    6

    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 actif
    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 : 167
    Points
    167

    Par défaut

    Je viens de faire un petit projet et chez moi cela fonctionne correctement...

    Code :
    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 :
    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
    Invité régulier
    Inscrit en
    septembre 2007
    Messages
    49
    Détails du profil
    Informations forums :
    Inscription : septembre 2007
    Messages : 49
    Points : 6
    Points
    6

    Par défaut

    merci ,
    je viens d'essayer ton code et effectivement il fonctionne

    super

  9. #9
    Modérateur

    Homme Profil pro Nicolas Romantzoff
    Ingénieur systèmes et réseaux
    Inscrit en
    février 2007
    Messages
    3 682
    Détails du profil
    Informations personnelles :
    Nom : Homme Nicolas Romantzoff
    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 : 3 682
    Points : 5 810
    Points
    5 810

    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 :
    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
    Invité régulier
    Inscrit en
    septembre 2007
    Messages
    49
    Détails du profil
    Informations forums :
    Inscription : septembre 2007
    Messages : 49
    Points : 6
    Points
    6

    Par défaut

    merci pour la réponse

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

  11. #11
    Invité régulier
    Inscrit en
    septembre 2007
    Messages
    49
    Détails du profil
    Informations forums :
    Inscription : septembre 2007
    Messages : 49
    Points : 6
    Points
    6

    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.

Liens sociaux

Règles de messages

  • Vous ne pouvez pas créer de nouvelles discussions
  • Vous ne pouvez pas envoyer des réponses
  • Vous ne pouvez pas envoyer des pièces jointes
  • Vous ne pouvez pas modifier vos messages
  •