# Activity ohne Aktion starten



## coolz3ro (4. Sep 2012)

Hallo!

Meine Frage bezieht sich auf das Starten einer neuen Activity.
Mit Intents kann man ja aus einer Activity heraus durch z.B. einen Button, den man betätigt, eine neue Activity starten. 
Wie ist es aber nun, wenn ich die App starte, OnCreate ausgeführt wird und ich ohne weitere Aktion des Users eine neue Activity starten möchte? Wie kann ich dies im Quellcode machen?

Vielen Dank!


----------



## schlingel (5. Sep 2012)

Das geht genauso.

im onCreate einfach startActivity mit dem entsprechenden Intent aufrufen.


----------



## coolz3ro (5. Sep 2012)

Das Problem ist nur, wenn ich das so mache, dann wird mir nicht zuerst die Activity angezeigt, von der aus ich die neue Activity aufrufe, sondern direkt die neue Activity.

Ich möchte aber, dass erst die erste Activity zu sehen ist (praktisch als "Startbildschirm" der App und dann nach einem Ladebalken automatisch die neue Activity geladen wird.

Wenn ich dann die neue Activity nur mit Folgemdem aufrufe, dann ergibt sich das oben genannte Problem!


```
Intent i = new Intent(this, HauptmenueActivity.class);
            startActivity(i);
```


----------



## schlingel (5. Sep 2012)

> [...] dann ergibt sich das oben genannte Problem!


Du nennst nirgends ein Problem ...



> Ich möchte aber, dass erst die erste Activity zu sehen ist (praktisch als "Startbildschirm" der App und dann nach einem Ladebalken automatisch die neue Activity geladen wird.



Damit kann man arbeiten ;-) So was nennt man Splash-Screen. Am einfachsten (und fehleranfälligsten) kann man das so machen, dass du in der SplashScreen-Activity einen AsyncTask startest der deine Aufgabe erledigt. Dieser kommuniziert über publishProgress an die Activity dass sich etwas getan hat womit du deinen Progress-Balken neu setzen kannst. Am Schluss beendest du die SplashScreen-Activity in der onPostExecute-Methode des AsyncTasks und startest du die eigentliche Activity.

Die zweite Variante ist das ganze über einen Service zu machen. Das hat den Vorteil, dass es zu keinen unschönen Randfällen kommen kann wenn z.B. der AsyncTask noch läuft obwohl die SplashScreen-Activity schon tot ist und solche Sachen. (Passiert z.B. wenn der Benutzer die App wechselt, einen Anruf bekommt, etc.)


----------



## coolz3ro (5. Sep 2012)

Vielen Dank! Genau das habe ich gesucht =))


----------



## coolz3ro (5. Sep 2012)

Gibt es denn eine Möglichkeit, dass der SplashScreen auch bleibt und nicht geschlossen wird, wenn man ihn antippt (bzw. anklickt)?
Im Beispiel, das ich dazu gefunden habe, war dies leider der Fall - ich finde das ist keine gute Eigenschaft. Ich möchte bestimmen, wann der Screen geschlossen wird!


----------



## schlingel (5. Sep 2012)

Tipp: Code nicht nur abschreiben sondern versuchen zu verstehen. In dem Beispiel war bestimmt irgendwo der Code für einen onClickHandler gesetzt. Von alleine schließt sich eine Activity nur wenn das System keinen Speicher mehr hat.


----------



## coolz3ro (5. Sep 2012)

Alles zu verstehen ist schon mein Ziel, aber oft steht man eben wie der Ochs vorm Berg 

Ich schätze mal das hier ist dafür verantwortlich...
(Ich habe es schon getestet - es funktioniert =) )



```
@Override
    public boolean onTouchEvent(MotionEvent event) {
        if (event.getAction() == MotionEvent.ACTION_DOWN) {
            _active = false;
        }
        return true;
        
        
    }
```

Vielleicht kannst du mir einen Tipp geben: Ich lerne Java für Android mit einem Buch, aber der Autor verzichtet vielfach darauf richtig zu erklären, was eine Methode genau macht und welche Werte ihr übergeben werden müssen. (Was oftmals ziemlich ärgerlich ist!!) Er beschreibt das Meiste nur anhand von ein oder zwei Beispielen.

*Wo kann ich mich darüber informieren (als Jemand mit wenig praktischer Erfahrung mit Java), wie eine Methode funktioniert und welche Werte ihr übergeben werden müssen.*

*Kennst du ein gutes Buch (oder andere Quellen), in dem solche Dinge gut erklärt werden?*


----------



## schlingel (6. Sep 2012)

> Wo kann ich mich darüber informieren (als Jemand mit wenig praktischer Erfahrung mit Java), wie eine Methode funktioniert und welche Werte ihr übergeben werden müssen.


Ich denke einmal, das ist ein Fass ohne Boden das Thema. Was dich aber weniger als die Auflösung der Methoden innerhalb von Objekten durch den Compiler interessieren wird, wird einfach nur das Programmieren sein, schätze ich.

Also, ich hab mit Java für Studenten angefangen so richtig Java zu programmieren. Das Problem an der Sache ist allerdings, dass es keine Neuauflage gibt und Java 1.4 verwendet wird. Kann ich also nicht uneingeschränkt empfehlen, auch wenn das Buch so sehr gut ist. 
Was hier im Forum allerdings oft empfohlen wird ist Java Head First bzw. Java von Kopf bis Fuß.

Wenn du dann über die ärgsten Basics hinaus bist, kann ich das Skriptum von einer meiner Anfangs-Lehrveranstaltungen empfehlen. Objektorientiertes Programmieren, Skriptum findest du unten im PDF-Format. Hier ist auch Design Patterns Head First zu empfehlen.

Wenn du das gemeistert hast, kann's dann losgehen mit Android spezifischen Fragen. Dazu sollte einmal klar sein wie denn der gewöhnliche Ablauf aussieht einer Activity. Android Tutorials gibt es auf dieser Seite in ausgezeichneter Qualität: Vogella Android Tutorials

Und wenn du das dann alles hast, reicht für einzelne Methoden die Google-Suche mit: _android developer "dein methodenname"_


----------

