Bonjour à tous,
Développeur android depuis peu (48h environ ;p) et étant un débutant en java ( je préfère le C), je dois réaliser une application assez complexe de controle de robot par wifi.
J'ai pour l'instant réaliser 3 écran (connexion, configuration et chargement), je ne traite pas encore les sockets ni les threads de connexion j'essaye juste de transférer la valeur contenu dans mes edittexte (ip+port) de mon activity configuration à mon activity chargement.
Voici une pseudo machine à état :
J'ouvre mon appli l'ecran associé a l'activité connexion s'ouvre et 2 boutons (connexion et configuration) apparaissent.
(Activity connexion)
Le bouton connexion servira à crée la socket il récupéra les valeur contenue dans l'Activity configuration (via l'activity connexion ?).
Le bouton configuration sert a ouvrir l'activity configration pour régler le port et l'ip a laquelle se connecté.
Après clique sur le bouton configuration l’écran suivant apparaît :
(Activity configuration)
Au lancement de l'application j'aimerais que les champs Edit texte (Activity configuration) apparaissent avec les valeurs rentrées et valider lors d'une utilisation ultérieur (état de mémoire).
2 champ de texte de type editTexte pour configurer l'ip et le port de connexion.
Un appui sur retour ne prendra en compte aucune des modifications faite lors du déroulement de l'activity configuration.
un appui sur valider enregistrera la variable stringIp et stringPort pour la transmettre.
Voilà c'est bien beau mais du code c'est mieux ;p
Mon activity connexion :
Sa marche niquel avec les 2 boutons mais aucune des fonctionalité n'a été implanté.
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
39
40 import android.os.Bundle; import android.app.Activity; import android.view.*; import android.widget.Button; import android.content.Intent; public class Connexion extends Activity { private Button b_connection; private Button b_configuration; protected void onCreate(Bundle savedInstanceState) { super.onCreate(savedInstanceState); setContentView(R.layout.interface_connexion); //On recupère l'id b_connection = (Button) findViewById(R.id.B_connexion); b_configuration = (Button) findViewById(R.id.B_configuration); //On affecte un event. b_connection.setOnClickListener(new View.OnClickListener(){ @Override public void onClick(View v){ Intent chargement = new Intent(getApplicationContext(),Chargement.class); startActivity(chargement); } }); b_configuration.setOnClickListener(new View.OnClickListener(){ @Override public void onClick(View v){ Intent configuration = new Intent(getApplicationContext(),Configuration.class); startActivity(configuration); } }); } }
Configuration :
Donc d'apres ce que j'ai lu le passage de données entre activity se fait a l'aide de bundle ou de put.extra a ce que j'ai pu lire avec la le nom de code en 1er paramètre et avec la variable en second.
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 import android.app.Activity; import android.content.Intent; import android.os.Bundle; import android.view.View; import android.widget.Button; import android.widget.EditText; public class Configuration extends Activity { private Button b_valid; private Button b_return; EditText my_ip = (EditText) findViewById(R.id.E_ip); EditText my_port = (EditText) findViewById(R.id.E_port); String ip = my_ip.getText().toString(); String port = my_port.getText().toString(); @Override protected void onCreate(Bundle savedInstanceState) { super.onCreate(savedInstanceState); setContentView(R.layout.interface_configuration); b_valid.setOnClickListener(new View.OnClickListener(){ @Override public void onClick(View v){ Intent configuration = new Intent(getApplicationContext(),Configuration.class); configuration.putExtra("ip",ip); configuration.putExtra("port",port); startActivity(configuration); } }); } }
J'essaye donc d'enregistrer la valeur mise dans les champs EditTexte.
Chargement :
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 import android.app.Activity; import android.content.Intent; import android.os.Bundle; public class Chargement extends Activity { String ip; String port; Intent intent = getIntent(); @Override protected void onCreate(Bundle savedInstanceState) { super.onCreate(savedInstanceState); setContentView(R.layout.interface_chargement); String ip = intent.getStringExtra("ip"); String port = intent.getStringExtra("port"); } }
J'essaye de récupérer les valeurs des EditTexte de l'activity configuration.
Je ne prend pas encore en compte l’état de mémoire.
Je ne prend pas encore en compte la différence entre valider et retour.
Le bouton retour ne fait rien.
En gros j'arrive pas a faire transiter des valeurs entre les activity ^^".
Merci d'avance.
PS mon log :
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
39
40 04-17 20:38:24.030: D/dalvikvm(378): GC_FOR_ALLOC freed 38K, 4% free 6348K/6595K, paused 56ms 04-17 20:38:24.121: I/dalvikvm-heap(378): Grow heap (frag case) to 13.535MB for 7579456-byte allocation 04-17 20:38:24.200: D/dalvikvm(378): GC_FOR_ALLOC freed <1K, 2% free 13749K/14023K, paused 50ms 04-17 20:38:24.311: D/dalvikvm(378): GC_CONCURRENT freed <1K, 2% free 13749K/14023K, paused 6ms+2ms 04-17 20:38:24.410: D/dalvikvm(378): GC_FOR_ALLOC freed 7402K, 52% free 7173K/14855K, paused 53ms 04-17 20:38:24.420: I/dalvikvm-heap(378): Grow heap (frag case) to 13.526MB for 6724816-byte allocation 04-17 20:38:24.560: D/dalvikvm(378): GC_FOR_ALLOC freed <1K, 8% free 13740K/14855K, paused 52ms 04-17 20:38:24.690: D/dalvikvm(378): GC_CONCURRENT freed <1K, 8% free 13740K/14855K, paused 4ms+16ms 04-17 20:38:25.290: D/dalvikvm(378): GC_FOR_ALLOC freed 6567K, 47% free 7903K/14855K, paused 51ms 04-17 20:38:25.400: I/dalvikvm-heap(378): Grow heap (frag case) to 19.036MB for 11754152-byte allocation 04-17 20:38:25.540: D/dalvikvm(378): GC_FOR_ALLOC freed <1K, 27% free 19382K/26375K, paused 50ms 04-17 20:38:25.662: D/dalvikvm(378): GC_CONCURRENT freed <1K, 27% free 19382K/26375K, paused 4ms+16ms 04-17 20:38:27.240: V/TLINE(378): new: android.text.TextLine@4063dc50 04-17 20:38:27.720: V/TLINE(378): new: android.text.TextLine@40d84140 04-17 20:38:50.790: D/AndroidRuntime(378): Shutting down VM 04-17 20:38:50.790: W/dalvikvm(378): threadid=1: thread exiting with uncaught exception (group=0x40014760) 04-17 20:38:50.854: E/AndroidRuntime(378): FATAL EXCEPTION: main 04-17 20:38:50.854: E/AndroidRuntime(378): java.lang.RuntimeException: Unable to instantiate activity ComponentInfo{com.example.test/com.example.test.Configuration}: java.lang.NullPointerException 04-17 20:38:50.854: E/AndroidRuntime(378): at android.app.ActivityThread.performLaunchActivity(ActivityThread.java:1672) 04-17 20:38:50.854: E/AndroidRuntime(378): at android.app.ActivityThread.handleLaunchActivity(ActivityThread.java:1764) 04-17 20:38:50.854: E/AndroidRuntime(378): at android.app.ActivityThread.access$1500(ActivityThread.java:122) 04-17 20:38:50.854: E/AndroidRuntime(378): at android.app.ActivityThread$H.handleMessage(ActivityThread.java:1002) 04-17 20:38:50.854: E/AndroidRuntime(378): at android.os.Handler.dispatchMessage(Handler.java:99) 04-17 20:38:50.854: E/AndroidRuntime(378): at android.os.Looper.loop(Looper.java:132) 04-17 20:38:50.854: E/AndroidRuntime(378): at android.app.ActivityThread.main(ActivityThread.java:4025) 04-17 20:38:50.854: E/AndroidRuntime(378): at java.lang.reflect.Method.invokeNative(Native Method) 04-17 20:38:50.854: E/AndroidRuntime(378): at java.lang.reflect.Method.invoke(Method.java:491) 04-17 20:38:50.854: E/AndroidRuntime(378): at com.android.internal.os.ZygoteInit$MethodAndArgsCaller.run(ZygoteInit.java:841) 04-17 20:38:50.854: E/AndroidRuntime(378): at com.android.internal.os.ZygoteInit.main(ZygoteInit.java:599) 04-17 20:38:50.854: E/AndroidRuntime(378): at dalvik.system.NativeStart.main(Native Method) 04-17 20:38:50.854: E/AndroidRuntime(378): Caused by: java.lang.NullPointerException 04-17 20:38:50.854: E/AndroidRuntime(378): at android.app.Activity.findViewById(Activity.java:1744) 04-17 20:38:50.854: E/AndroidRuntime(378): at com.example.deporteo.Configuration.<init>(Configuration.java:23) 04-17 20:38:50.854: E/AndroidRuntime(378): at java.lang.Class.newInstanceImpl(Native Method) 04-17 20:38:50.854: E/AndroidRuntime(378): at java.lang.Class.newInstance(Class.java:1301) 04-17 20:38:50.854: E/AndroidRuntime(378): at android.app.Instrumentation.newActivity(Instrumentation.java:1022) 04-17 20:38:50.854: E/AndroidRuntime(378): at android.app.ActivityThread.performLaunchActivity(ActivityThread.java:1663) 04-17 20:38:50.854: E/AndroidRuntime(378): ... 11 more 04-17 20:38:54.490: I/Process(378): Sending signal. PID: 378 SIG: 9
Partager