Précédent   Forum du club des développeurs et IT Pro > Java > Général Java > Java & Mobiles > Android
Android Forum d'entraide sur Android, la plateforme mobile de Google pour téléphones portables et Smartphones. Avant de poster -> FAQ Android
Partagez cette discussion sur d'autres réseaux sociaux : Viadeo Twitter Google Facebook Digg Delicious MySpace Yahoo
Réponse
 
Outils de la discussion
Publicité
'
Vieux 03/01/2013, 09h58   #1
mochel
Invité régulier
 
Inscription : septembre 2007
Messages : 43
Détails du profil
Informations forums :
Inscription : septembre 2007
Messages : 43
Points : 5
Points : 5
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
mochel est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 03/01/2013, 11h10   #2
Jay
Membre actif
 
Inscription : juin 2002
Messages : 124
Détails du profil
Informations personnelles :
Localisation : France, Gironde (Aquitaine)

Informations forums :
Inscription : juin 2002
Messages : 124
Points : 174
Points : 174
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
Jay est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 03/01/2013, 15h31   #3
mochel
Invité régulier
 
Inscription : septembre 2007
Messages : 43
Détails du profil
Informations forums :
Inscription : septembre 2007
Messages : 43
Points : 5
Points : 5
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 ??
mochel est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 03/01/2013, 15h44   #4
Jay
Membre actif
 
Inscription : juin 2002
Messages : 124
Détails du profil
Informations personnelles :
Localisation : France, Gironde (Aquitaine)

Informations forums :
Inscription : juin 2002
Messages : 124
Points : 174
Points : 174
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
Jay est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 03/01/2013, 15h46   #5
Jay
Membre actif
 
Inscription : juin 2002
Messages : 124
Détails du profil
Informations personnelles :
Localisation : France, Gironde (Aquitaine)

Informations forums :
Inscription : juin 2002
Messages : 124
Points : 174
Points : 174
Sinon regarde :

http://en.androidwiki.com/wiki/Dynam...to_TableLayout
__________________
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
Jay est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 03/01/2013, 15h49   #6
mochel
Invité régulier
 
Inscription : septembre 2007
Messages : 43
Détails du profil
Informations forums :
Inscription : septembre 2007
Messages : 43
Points : 5
Points : 5
oui bien sur

le voila

Citation:
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)
mochel est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 03/01/2013, 16h34   #7
Jay
Membre actif
 
Inscription : juin 2002
Messages : 124
Détails du profil
Informations personnelles :
Localisation : France, Gironde (Aquitaine)

Informations forums :
Inscription : juin 2002
Messages : 124
Points : 174
Points : 174
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
Jay est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 03/01/2013, 16h49   #8
mochel
Invité régulier
 
Inscription : septembre 2007
Messages : 43
Détails du profil
Informations forums :
Inscription : septembre 2007
Messages : 43
Points : 5
Points : 5
merci ,
je viens d'essayer ton code et effectivement il fonctionne

super
mochel est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 03/01/2013, 18h38   #9
nicroman
Modérateur
 
Homme Nicolas Romantzoff
Ingénieur systèmes et réseaux
Inscription : février 2007
Messages : 2 863
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 : 2 863
Points : 4 916
Points : 4 916
Envoyer un message via Skype™ à nicroman
[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
nicroman est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 03/01/2013, 19h28   #10
mochel
Invité régulier
 
Inscription : septembre 2007
Messages : 43
Détails du profil
Informations forums :
Inscription : septembre 2007
Messages : 43
Points : 5
Points : 5
merci pour la réponse

tu peux donner plus de détail , un exemple serait pas mal
mochel est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 07/01/2013, 18h41   #11
mochel
Invité régulier
 
Inscription : septembre 2007
Messages : 43
Détails du profil
Informations forums :
Inscription : septembre 2007
Messages : 43
Points : 5
Points : 5
en fait je voudrais faire un tableau comme celui la :

quelle est la meilleure méthode d'apres vous ?
Images attachées
Type de fichier : png symbole_table_compteur_gaz.png (16,4 Ko, 6 affichages)
mochel est déconnecté   Envoyer un message privé Réponse avec citation 00
Réponse Cette discussion est résolue.
Outils de la discussion

Navigation rapide


Fuseau horaire GMT +2. Il est actuellement 01h54.


 
 
 
 
Partenaires

Hébergement Web