Probleme mit Form.isShown

a_l_e_x

Mitglied
Hallo, ih hab hier nen kleines Problem welches ich nicht gelößt bekomme.

Hab nen Midlet mit mehrern Form Objecten. (Alles mit Netbeans erzeugt.)

ich kann sie so auch mit switchDisplayable(null, getFormX); ohne Probleme nacheinander wechseln.

Frage ich dann aber mittels einer if Schleife
formX.isShown() ab, kommt immer false obwohl das Richtige Object angezeigt wird.

Hab dann mal rumgetestet und folgendes festgestellt,
wenn ich die nach der reihe nach anzeige bringt mir isShown() immer nur true von dem Object was angezeigt wurde bevor ich das Displayable gewechselt habe. also immer 1 zu spät.

was mache ich falsch.

Dann noch folgendes
in einer Methode wird erst ein Form angezeigt und währendessen ein Gauge mit einer for schleife gefüllt.
beim ersten aufruf funktionierts ordnungsgemäß
beim zweiten aufruf jedoch wird das Form Object erst nach dem ablauf der Schleife eingeblendet .

Woran könnte das liegen?

finde keine Methode die die Aneige evtl. vor der Schleife aktualisert (wie repaint() oder so.)


Danke euch schon mal im Vorraus
CLDC 1.1
MIDP 2.1
 

The_S

Top Contributor
ich kann sie so auch mit switchDisplayable(null, getFormX); ohne Probleme nacheinander wechseln.

kA, kenne den GUI-Builder von NetBeans und diese Methode nicht.

Frage ich dann aber mittels einer if Schleife

if-schleife.de

Hab dann mal rumgetestet und folgendes festgestellt,
wenn ich die nach der reihe nach anzeige bringt mir isShown() immer nur true von dem Object was angezeigt wurde bevor ich das Displayable gewechselt habe. also immer 1 zu spät.

was mache ich falsch.

Wenn ich das richtig in Erinnerung habe, dann wird das Displayable asynchron gesetzt. Das gesetzte Displayable wird also noch nicht angezeigt, während dein Code schon weiter läuft.

Dann noch folgendes
in einer Methode wird erst ein Form angezeigt und währendessen ein Gauge mit einer for schleife gefüllt.
beim ersten aufruf funktionierts ordnungsgemäß
beim zweiten aufruf jedoch wird das Form Object erst nach dem ablauf der Schleife eingeblendet .

Woran könnte das liegen?

Kann viele Gründe haben. Ohne Code schwer zu sagen.
 

a_l_e_x

Mitglied
Danke schon mal für deine Antwort und Sorry klar if Abfrage. leuchtet mit ein.

also die generierte Methode sieht so aus.
Java:
public void switchDisplayable(Alert alert, Displayable nextDisplayable) {
        // write pre-switch user code here
        Display display = getDisplay();
        if (alert == null) {
            display.setCurrent(nextDisplayable);
        } else {
            display.setCurrent(alert, nextDisplayable);
        }

public Form getFormX() {
        if (formX == null) {
            // write pre-init user code here
            formX = new Form("Title", new Item[] { getImageItem(), getGauge() });
            // write post-init user code here
        }
        return formX;
    }

denke das meine Probleme zusammenhängen, habe auch die Documentation der Klasse Display gelesen , wo dies auch erwähnt wird das es sa wohl ne verzögerung gibt.

Gibt es ne Möglichkeit zu warten bis das passende Form wirklich angezeigt wird bzw. isShown() true gibt ? und dann erst weiter läuft ?

hatte auch überlegt nach dem ersten anzeigen des Forms dies wieder zu löschen um es dann weider neu zu erstellen (da der erste aufruf ja funktioniert)
evtl. mit
Java:
if (formX != null)
	{       
	    formX = null;
    }
gibt aber ne java.lang.IllegalStateException

Dankeschon mal.
 

The_S

Top Contributor
Einfach

Java:
while (!form.isShown()) {
  try {
    Thread.sleep(50);
  } catch (InterruptedException ie) {
    ie.printStackTrace();
  }
}
 

a_l_e_x

Mitglied
funktioniert leider auch nicht, da form.isShown() immer erst true gibt für ein Object wenn das nächste bereits angezeigt wird.
auch Display.getCurrent() gibt immer das Object zurück welches 1 vorher angezeigt wurde und nicht das was gerade mit setCurrent() gesetzt wurde.
auch eine wartezeit bringt nix.
die while schleife lief ewig weiter.

Schade aber werde mir wohl was anderes überlegen müssen.zb. ein weiteres Form Object.

Aber Danke dir für die Mühe
 

The_S

Top Contributor
Warum funktioniert das nicht? Du wolltest doch so lange werte, bis form.isShown true zurückliefert. Genau das macht meine Schleife (inkl. Wartezeit um das Handy nicht zu überlasten).
 

a_l_e_x

Mitglied
ja dachte auch das es funktionieren müsste.

Aber isShown liefert nie für das angezeigte Form true ! keinen plan wieso.

Bsp.
Midtlet startet
Form1 aktiv
- form1.isShown() gibt false

Form1 nicht aktiv
Form2 aktiv
- form1.isShown() gibt true
- form2.isShown() gibt false

Form1 nicht aktiv
Form2 nicht aktiv
Form3 aktiv
- form1.isShown() gibt false
- form2.isShown() gibt true
- form3.isShown() gibt false

also immer eins versetzt.
Denke das dies erst geändert wird wenn das form ne weile sichtbar ist und das Programm sonst nix macht.
Aber die Schleife mit Thread.sleep dies dann verhindert.
 
Ähnliche Java Themen
  Titel Forum Antworten Datum
J Android Probleme mit BLE-Notify Android & Cross-Platform Mobile Apps 2
J Android Probleme mit der Realm Datenbank Android & Cross-Platform Mobile Apps 3
J Android Probleme mit Navigation-Fragments? Android & Cross-Platform Mobile Apps 0
N Probleme mit custom dynamic ListView Android & Cross-Platform Mobile Apps 15
B Android Probleme mit Android Studio Android & Cross-Platform Mobile Apps 6
B Android Probleme mit Realm Datenbank Android & Cross-Platform Mobile Apps 2
B Android Probleme mit ArrayList Android & Cross-Platform Mobile Apps 6
J Android Probleme mit FileProvider Android & Cross-Platform Mobile Apps 1
B Probleme mit Firebase Authentication Android & Cross-Platform Mobile Apps 25
H Android Probleme mit SearchView in ArrayAdapter Android & Cross-Platform Mobile Apps 7
ATZENPOWER Android Probleme mit mobilen Daten via lte Android & Cross-Platform Mobile Apps 10
S Android Probleme beim Verbinden mit einer HTTPS Seite Android & Cross-Platform Mobile Apps 4
B Android Probleme mit RealmObject? Android & Cross-Platform Mobile Apps 1
M Android ExpandableListView merkwürdige Probleme Android & Cross-Platform Mobile Apps 20
F Probleme mit Google-Maps Android & Cross-Platform Mobile Apps 0
B Android Probleme mit ViewPager? Android & Cross-Platform Mobile Apps 5
J Probleme mit ViewPager und Activity Android & Cross-Platform Mobile Apps 1
B Android Probleme mit Eclipse? Android & Cross-Platform Mobile Apps 6
E MAVLINK Probleme Android & Cross-Platform Mobile Apps 1
C Android Probleme mit JavaMail Android & Cross-Platform Mobile Apps 5
B Android Probleme mit Facebook-SDK? Android & Cross-Platform Mobile Apps 1
D Android Probleme mit info/warning (1, 902) Android & Cross-Platform Mobile Apps 4
D Android Gallery Probleme Android & Cross-Platform Mobile Apps 3
B Probleme mit App auf Galaxy S3? Android & Cross-Platform Mobile Apps 13
S Hat der AVD-Manager Probleme mit GPS? Android & Cross-Platform Mobile Apps 5
P Probleme mit xml-Layout Android & Cross-Platform Mobile Apps 2
P Android Probleme mit Spinner Android & Cross-Platform Mobile Apps 3
F Layout mit listViews (Scrolling-Probleme) Android & Cross-Platform Mobile Apps 2
A Android Probleme mit Dialog Android & Cross-Platform Mobile Apps 4
U SQLite-Datenbank Probleme Android & Cross-Platform Mobile Apps 8
T Android Probleme bei Facebook Integration Android & Cross-Platform Mobile Apps 5
tfa Android Layout-Probleme: View programmatisch erweitern (addContentView) Android & Cross-Platform Mobile Apps 7
A Probleme mit ListView / ArrayAdapter Android & Cross-Platform Mobile Apps 3
A Probleme mit Calendar auf dem Handy Android & Cross-Platform Mobile Apps 3
U Probleme mit der drawString Methode bei Canvas Android & Cross-Platform Mobile Apps 8
P Probleme mit dem Deployment Android & Cross-Platform Mobile Apps 3
P Probleme mit Streams Android & Cross-Platform Mobile Apps 4
C 2 kleine Probleme (Datei lesen, String durchsuchen) Android & Cross-Platform Mobile Apps 16
G Proguard Obfuscator macht Probleme Android & Cross-Platform Mobile Apps 2
P Probleme mit RMS Android & Cross-Platform Mobile Apps 5
B Form aus GameCanvas aufrufen Android & Cross-Platform Mobile Apps 8
X Anfängerfrage : Form und CommandListener - Warum geht das nicht? Android & Cross-Platform Mobile Apps 5
D Mehrere Kopien von einer Form Android & Cross-Platform Mobile Apps 7
L Form und Steuerkreuz Android & Cross-Platform Mobile Apps 7
M Items auf dem Form ausrichten Android & Cross-Platform Mobile Apps 4

Ähnliche Java Themen

Neue Themen


Oben