B4A Empfangene Daten werden beim Layout wechsel angezeigt

  • Antworten:9
Frank Neumann
  • Forum-Beiträge: 178

03.12.2012, 12:21:07 via Website

Hallo,

ich habe hier ein code, mit der ich daten senden und auch empfangen kann.
Senden und empfangen ist kein problem, allerdings werden die Empfangenedaten erst später angezeigt.

Ich habe ein "Main" Seite und eine "Seite01" Seite.
Sobald ich die Verbindeung zum Server Rechner aufgebaut habe, wechselt sich mein Layout von "Main" nach"Seite01".
Auf diser Seite (Seite01) kann ich ein String senden in dem ich den Button 1 klicke.

Daraufhin bekomme ich dann vom Server auch ein String gesendet, den ich dann erst in MsgBox sehen kann, wenn sich das Layout von "Seite01" nach "Main" Seite wechselt.

Warum???

wieso öffnet sich der MsgBox nicht dann, wenn ich mich auf der Seite02 befinde?

Bitte um Hilfe.

Hier das gesamte Code dazu:

Main Code
1Sub Process_Globals
2 Dim Socket1 As Socket
3 Dim Astreams As AsyncStreams
4 Dim ip As String : ip = "192.168.178.2"
5 Dim port As Int : port = 2011
6End Sub
7
8Sub Globals
9 Dim Button1 As Button
10End Sub
11
12Sub Activity_Create(FirstTime As Boolean)
13 Activity.LoadLayout("ClientForm")
14 Socket1.Initialize("Client")
15
16End Sub
17
18Sub AStreams_NewData (Buffer() As Byte)
19 Dim msg As String
20 msg = BytesToString(Buffer, 0, Buffer.Length, "UTF8")
21 Msgbox (msg,"")
22End Sub
23
24Sub Client_Connected(ConStatus As Boolean)
25 If ConStatus = True Then
26 Msgbox("Verbunden!","")
27 Astreams.Initialize(Socket1.InputStream, Socket1.OutputStream, "AStreams")
28 codes.SendCommand("ADR")
29 Activity.Finish
30 StartActivity("seite01")
31 Else
32 Msgbox(LastException.Message, "Keine Verbindung möglich")
33 End If
34End Sub
35
36'Buttons SendCommand(String)
37Sub Button1_Click
38Socket1.Connect(ip,port,20000)
39End Sub
40
41Sub Activity_Resume
42
43End Sub
44
45Sub Activity_Pause (UserClosed As Boolean)
46
47End Sub


Seite01
1'Activity module
2Sub Process_Globals
3
4End Sub
5
6Sub Globals
7
8 Dim Button1 As Button
9 Dim Button2 As Button
10End Sub
11
12Sub Activity_Create(FirstTime As Boolean)
13 Activity.LoadLayout("seite01")
14End Sub
15
16Sub Activity_Resume
17
18End Sub
19
20Sub Activity_Pause (UserClosed As Boolean)
21
22End Sub
23
24
25
26Sub Button1_Click
27codes.SendCommand("BAS")
28End Sub
29
30Sub Button2_Click
31Main.Socket1.Close
32Activity.Finish
33StartActivity("main")
34End Sub


Code im Module
1'Code module
2'Subs in this code module will be accessible from all modules.
3Sub Process_Globals
4 'Dim Astreams As AsyncStreams
5
6End Sub
7
8Sub SendCommand(Command As String)
9 Try
10 If Main.Astreams.IsInitialized = False Then Return
11
12 Dim buffer() As Byte
13 buffer = Command.GetBytes("UTF8")
14 ' Astreams.Write(buffer)
15 Main.Astreams.Write2(buffer,0,buffer.Length)
16 ToastMessageShow("Erfolgreich versandt.",False)
17 Catch
18 ToastMessageShow("Fehler aufgetreten.", False)
19 End Try
20End Sub



Gruß
frank

— geändert am 03.12.2012, 12:22:29

grüße aus Mittelfranken

Antworten
Carsten M.
  • Forum-Beiträge: 33.204

03.12.2012, 18:41:24 via App

Ich verstehe nur Bahnhof.

Auf welcher "Seite02" befindest Du Dich. Es war doch nur von "Seite01" die Rede...!?

Und auf Seite01 ist doch gar keine Msgbox...!?

Herzliche Grüße

Carsten

Ich komm' mir langsam vor wie jemand, der ich bin // #cäthe

Antworten
Frank Neumann
  • Forum-Beiträge: 178

03.12.2012, 23:43:48 via App

seite02 ist ein tippfehler, korrekt ist seite01.

grüße aus Mittelfranken

Antworten
Carsten M.
  • Forum-Beiträge: 33.204

04.12.2012, 05:46:22 via App

Frank Neumann
seite02 ist ein tippfehler, korrekt ist seite01.
Und auf Seite01 ist kein Msgbox im Code, also kann es da auch keine Message box geben.

Herzliche Grüße

Carsten

Ich komm' mir langsam vor wie jemand, der ich bin // #cäthe

Antworten
Frank Neumann
  • Forum-Beiträge: 178

04.12.2012, 10:10:01 via Website

das ist auch korrekt,
es wird ein Kommando gesendet durch klick auf button1 der sich auf der seite01 befinet.
daraufhin bekomme ich auch ein kommando vom server gesendet, der dann hier hin geht
1Sub AStreams_NewData (Buffer() As Byte)
2 Dim msg As String
3 msg = BytesToString(Buffer, 0, Buffer.Length, "UTF8")
4 Msgbox (msg,"")
5End Sub

dieses code ist unter "Main" und deshalb wird der MsgBox nicht angezeigt, da ich mich immer noch auf der seite01 befinde.

du kannst dir doch das in null komma nix aufbauen und testen.


gruß´
frank

grüße aus Mittelfranken

Antworten
Carsten M.
  • Forum-Beiträge: 33.204

04.12.2012, 12:23:57 via App

Naja, die Activity Main ist ja nicht aktiv, wenn Du noch die Activity Seite01 geöffnet hast. Ergo wird der Code für die Msgbox nicht ausgeführt...

Works as designed würde ich sagen.

Schau Dir mal den Lifecycle von Activities bei Android genau an.

Eine Message Box, die Du sehen möchtest, wenn Du auf Seite01 bist, muss von Seite01 aufgerufen werden. Die nicht aktive Activity macht *rein gar nichts*. Die ist in dem Moment schlicht und ergreifend nicht existent.

Herzliche Grüße

Carsten

— geändert am 04.12.2012, 12:36:18

Ich komm' mir langsam vor wie jemand, der ich bin // #cäthe

Antworten
Frank Neumann
  • Forum-Beiträge: 178

04.12.2012, 13:22:36 via Website

hallo carsten,

wenn ich aber diesen code

1Sub AStreams_NewData (Buffer() As Byte)
2 Dim msg As String
3 msg = BytesToString(Buffer, 0, Buffer.Length, "UTF8")
4 Msgbox (msg,"")
5End Sub

in der seite01 habe, dann bekomme ich auch kein msgbox. und wenn ich dann auf die Main seite wechsle, bekomme ich eine Fehlermeldung
1"An error has occurred in sub:mainafterFirstLayout (java line:88) java.lang.Exception: Sub astreams_newdata was not found."

grüße aus Mittelfranken

Antworten
Carsten M.
  • Forum-Beiträge: 33.204

04.12.2012, 15:53:52 via App

Dann musst Du noch ein bisschen mehr umbauen...

Herzliche Grüße

Carsten

Ich komm' mir langsam vor wie jemand, der ich bin // #cäthe

Antworten
Frank Neumann
  • Forum-Beiträge: 178

05.12.2012, 00:34:51 via Website

Hi Carsten,

ich werde verrückt... also nach dem ich dein letzten Beitrag gelesen habe, habe ich ohne Ende versucht bzw. experimentiert was an umbau so möglich ist. Es geht einfach nicht, oder mir fehlen da die Kenntnisse an Basic4Android, wobei ich das eigentlich gelesen habe.

Es sei denn, es gibt noch versteckte Tipps & Tricks die ich nicht kenne.

Wenn du dich da aus kennst, dann sei doch bitte nett und verrate sie mir :-)
ansonsten knalle ich mein Kopf gegen die Wand. :-(

naja, jetzt gehe ich aber schlafen bin total müde geworden.. und leider ohne Erfolg :-(

gruß
frank

grüße aus Mittelfranken

Antworten
Carsten M.
  • Forum-Beiträge: 33.204

05.12.2012, 06:42:19 via App

Hi Frank,

Du hast also irgendwas umgebaut und jetzt kommt eine Fehlermeldung.

Wie soll jemand Ausenstehender nun wissen, was da falsch ist, ohne den Code zu kennen?

Sorry, aber so geht das nicht.

Die fehlende Sub wird moniert auf Main? Dann wird da wohl noch irgendetwas rumstehen im Code, das auf diese Sub verweist, die aber nicht mehr da ist...

Wo und was, das weiß ich nicht. Woher sollte ich auch ohne Code?

Herzliche Grüße

Carsten

Ich komm' mir langsam vor wie jemand, der ich bin // #cäthe

Antworten