1. Nimm jetzt an unserem 2. ADVENT-Gewinnspiel teil - Alle Informationen findest Du hier!

Code erst nach setContentView() laden

Dieses Thema im Forum "Android App Entwicklung" wurde erstellt von martino, 13.12.2010.

  1. martino, 13.12.2010 #1
    martino

    martino Threadstarter Neuer Benutzer

    Beiträge:
    6
    Erhaltene Danke:
    0
    Registriert seit:
    13.12.2010
    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
     
  2. Bobert, 14.12.2010 #2
    Bobert

    Bobert Erfahrener Benutzer

    Beiträge:
    161
    Erhaltene Danke:
    15
    Registriert seit:
    21.11.2010
    Phone:
    Nexus S
    Hallo,

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

    Gruß Bobert
     
    martino bedankt sich.
  3. martino, 14.12.2010 #3
    martino

    martino Threadstarter Neuer Benutzer

    Beiträge:
    6
    Erhaltene Danke:
    0
    Registriert seit:
    13.12.2010
    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
     
  4. Bobert, 14.12.2010 #4
    Bobert

    Bobert Erfahrener Benutzer

    Beiträge:
    161
    Erhaltene Danke:
    15
    Registriert seit:
    21.11.2010
    Phone:
    Nexus S
    martino bedankt sich.
  5. martino, 14.12.2010 #5
    martino

    martino Threadstarter Neuer Benutzer

    Beiträge:
    6
    Erhaltene Danke:
    0
    Registriert seit:
    13.12.2010
    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ß
     
  6. Bobert, 14.12.2010 #6
    Bobert

    Bobert Erfahrener Benutzer

    Beiträge:
    161
    Erhaltene Danke:
    15
    Registriert seit:
    21.11.2010
    Phone:
    Nexus S
    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
     
    martino bedankt sich.
  7. martino, 14.12.2010 #7
    martino

    martino Threadstarter Neuer Benutzer

    Beiträge:
    6
    Erhaltene Danke:
    0
    Registriert seit:
    13.12.2010
    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
     
  8. Bobert, 15.12.2010 #8
    Bobert

    Bobert Erfahrener Benutzer

    Beiträge:
    161
    Erhaltene Danke:
    15
    Registriert seit:
    21.11.2010
    Phone:
    Nexus S
    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
     
  9. martino, 15.12.2010 #9
    martino

    martino Threadstarter Neuer Benutzer

    Beiträge:
    6
    Erhaltene Danke:
    0
    Registriert seit:
    13.12.2010
    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ß
     

Diese Seite empfehlen