Code erst nach setContentView() laden

M

martino

Neues Mitglied
0
Hallo zusammen,

ist es möglich dass eine Activity erst das xml-File lädt und
anschließend weiteren Code ?

Ich habe in meiner App einen Startbildschirm / Startactivity bei der diverse Daten aus einer sql Datenbank geladen werden.

In Abhängigkeit dieser Daten wird dann eine andere Activity gestartet.

Nun geht mein Startbildschirm völlig unter weil das xml-File garnicht geladen wird, sondern gleich zur nächsten Activity gesprungen wird.

Code:
    @Override
    public  void  onCreate(Bundle  icicle)  { 
        super.onCreate(icicle); 
        setContentView(R.layout.start); 
        
        startconnect();
    }

Eine Warteschleife nutzt da nichts..
Irgendwelche Vorschläge?

Gruß

Martino
 
Hallo,

du möchtest den Startbildschirm anzeigen, warum hilft eine "Warteschleife" nicht?

Gruß Bobert
 
  • Danke
Reaktionen: martino
Hi,

eine Warteschleife finde ich etwas unprofessionell.
Ich habs mit ner for schleife probiert die bis 5000 hochzählt..

Die App ist in der Zeit aber schwarz geblieben.

Gibts da nicht andere Möglichkeiten?

Gruß

Martino
 
vielen Dank erstmal,

hab es nun mit folgendem Code versucht:


Code:
    @Override
    public  void  onCreate(Bundle  icicle)  { 
        super.onCreate(icicle); 
        setContentView(R.layout.start); 

        try {
            Thread.sleep(20000);
        } catch (InterruptedException e) {
            // TODO Auto-generated catch block
            e.printStackTrace();
        }
        
        startconnect();
    }


Das Layout wird nicht geladen. Die App bleibt in der Wartezeit einfach schwarz und zeigt danach die nächste Activity an die in startconnect() aufgerufen wird.

Mit this.wait() gibts ne Fehlermeldung.

Gruß
 
Hallo,

stimmt habe es ausprobiert ist bei mir das selbe, bin momentan ratlos :sad:
Hatte die Idee dieses könnte funktionieren

Code:
    public void onCreate(Bundle savedInstanceState) {
        super.onCreate(savedInstanceState);
        setContentView(R.layout.main);
    }
    
    @Override
    public void onStart() {   
        super.onStart();
        
        try {
            Thread.sleep(2000);
        } catch (InterruptedException e) {
            e.printStackTrace();
        }

        startconnect();
    }
aber leider auch nicht. Oder oder oder this.show(R.id.main) ...

Gruß Bobert
 
  • Danke
Reaktionen: martino
Hi,

habs hinbekommen !! Es geht mit einem Handler der eine Warteschleife eingebaut hat.. das hab ich von hier:

anddev.org • View topic - Splash Screen

this.show(R.id.main)
hat bei mir nicht geklappt. Eclipse hat das nichtmal durchgelassen.

hier mein Code:

Code:
    private final int SPLASH_DISPLAY_LENGTH = 5000;
    

    @Override
    public  void  onCreate(Bundle  icicle)  { 
        super.onCreate(icicle); 
        setContentView(R.layout.start); 
        
        
        new Handler().postDelayed(new Runnable(){
            @Override
            public void run(){
                /*Create an Intent that will start the Menu.Activity */
                final   Intent  newuserintent  =  new   Intent(start.this, newuser. class); 
                startActivity(newuserintent);
            }
        }, SPLASH_DISPLAY_LENGTH );
        
        
        //startconnect();
    }


Vielen Dank für Deine Hilfe !!

Martino
 
Hallo,

:thumbup:

Ja diese Lösung gefällt mir auch hab es eben mal probiert!
Das startconnect(); rufst Du dann in newuser.class auf, oder?!

Gruß Bobert
 
Hi,

nein, ich muss die nächste Activity in Abhängigkeit von startconnect() aufrufen.

Ich habs jetzt so gemacht das mir startconnect() ein Wert zurückgibt und jenachdem wird eine Activity aufgerufen:

Code:
        daten = startconnect();
        
        new Handler().postDelayed(new Runnable(){
            @Override
            public void run(){
                /*Create an Intent that will start the Menu.Activity */
                if (daten=="keinErgebniss") {
                    final   Intent  newuserintent  =  new   Intent(start.this, newuser. class); 
                    //intent.putExtra(BETRAG_KEY,  betrag);
                    startActivity(newuserintent); 
                }
                else {
                    final   Intent  mainintent  =  new   Intent(start.this, Main. class); 
                    //intent.putExtra(BETRAG_KEY,  betrag);
                    startActivity(mainintent);             
                }
            }
        }, SPLASH_DISPLAY_LENGTH );

Gruß
 

Ähnliche Themen

5
Antworten
22
Aufrufe
1.422
590239
5
S
Antworten
9
Aufrufe
1.213
swa00
swa00
U
  • unerfahrenerAppEntwickler
Antworten
3
Aufrufe
710
swa00
swa00
Zurück
Oben Unten