onCreate wird nicht aufgerufen


75

Ich habe 2 Aktivitäten: Der Benutzer der ersten Aktivität klickt auf eine Schaltfläche, die die zweite Aktivität startet. Die 2. Aktivität erledigt die ganze Arbeit.

Ich starte die 2. Aktivität wie folgt, die sich in einer inneren Klasse von onClickListener befindet, und habe versucht, sie explizit mit (FirstActivity.this, Simple.Class) aufzurufen, aber das Gleiche passiert.

    Intent test = new Intent(arg0.getContext(),Simple.class);
    startActivity(test);

Auf dem Emulator sehe ich, wie sich der Bildschirm bewegt, als würde er die 2. Aktivität aufrufen, aber alles, was ich bekomme, ist ein schwarzer Bildschirm, aber nichts wird aus meinem Layout geladen. Ich habe mir logcat angesehen und sehe einige fehlgeschlagene Nachrichten im Binder-Thread. Dies ist die onCreate-Funktion aus meiner zweiten Aktivität, aber ich erhalte weder vom Bildschirm noch von logcat Ergebnisse, die mir zeigen, dass die Log-Funktionen aufgerufen wurden:

    public void onCreate(Bundle savedState)
    {
       Log.d("SimpleActivity","OnCreate Started");

       super.onCreate(savedState);
   setContentView(R.layout.simple);

       Log.d("SimpleActivity","OnCreate Ended");
    }

Hinweis: Ich habe den Basiskonstruktor in OnCreate () mit super.onCreate (savedState) in meinem obigen Code aufgerufen.


poste etwas mehr Code, damit wir sehen können, was arg0 ist. Sie sollten wahrscheinlich nicht verwenden, was auch immer das ist. Verwenden Sie YourActivity.this als Kontext, um zu einer neuen Absicht überzugehen.
FoamyGuy

Hast du das gelöst? Haben Sie ein Fragment in der Ansicht, das direkt instanziiert wird?
Adam Mendoza

Antworten:


275

Was mir passiert ist, war, dass ich die falsche onCreateMethode außer Kraft gesetzt habe . Ich habe überschrieben, public void onCreate(Bundle savedInstanceState, PersistableBundle persistentState)als ich wirklich überschreiben musste protected void onCreate(@Nullable Bundle savedInstanceState). Vielleicht hilft das jemandem!


18
Danke, das war es wirklich!
Mrpeardotnet

3
Ich habe mindestens eine Stunde gebraucht, um diesen dummen Käfer zu finden ... Verdammt public void onCreate!
Raphael Royer-Rivard

2
oncreate (& enter hat mich hier gelandet lol .. Auto-Vervollständigung sollte die Arbeit erleichtern, nicht wahr?
Vihaan Verma

4
Vielen Dank an Google, dass Sie "void onCreate (Bundle savedInstanceState, PersistableBundle persistentState)" zur Standardmethode für die Code-Vervollständigung gemacht haben. Grrrrrrr
Carlos

2
Vielen Dank an Google, dass wir uns auf die App-Entwicklung konzentrieren konnten: D
Andrea Cioccarelli

6

Es ist möglich, dass onCreate nicht aufgerufen wird, wenn die Aktivität nie zerstört wurde, wenn aus irgendeinem Grund eine Aktivität herumhängt, wenn sie das nächste Mal instanziiert wird, wird sie nicht neu erstellt, sondern stattdessen fortgesetzt ...

Zumindest ist es das, womit ich mich gerade in meinem Code beschäftige ... Der Lebenszyklus von Aktivitäten scheint eine gute logische Erklärung zu sein. In 99% der Fälle verlasse ich mich jedoch darauf, dass Create beim Starten von Activity aufgerufen wird, und es scheitert nicht an mir ... .

Bearbeiten: Und natürlich, weil ich beim Beenden der Aktivität nicht finish () aufgerufen habe. Doh.


1
Diese Antwort gibt mir einen Hinweis zur Behebung meines Problems. In meinem Fall wird die Aktivität unter der Bedingung eines Objektflags beendet und dies wird in den ausführbaren Code des Handlers eingefügt. Dieses Objekt wird jedoch null, bevor die ausführbare Datei ausgeführt wird. Dank dafür.
Jrhamza

Das ist, was in meinem Fall passiert, geht direkt zu onPause, onCreated wird nicht angerufen.
Live-Liebe

2

Dies hängt nicht mit diesem bestimmten Problem zusammen, kann aber auch auftreten, wenn die Aktivität nicht in der Manifestdatei deklariert ist.


1

entfernen Sie android: launchMode = "singleTask" aus dem Manifest


0

Sie müssen die super.onCreate(savedState)Methode aufrufen . Schauen Sie sich das Aktivitätsdokument an .

 public void onCreate(Bundle savedState)
    {
     super.onCreate(savedState);
    }

0

Sie sollten @Override onCreate und Add super.onCreate()drin

@Override
public void onCreate(Bundle savedState)
{
   super.onCreate(savedState);

   Log.d("SimpleActivity","OnCreate Started");
   setContentView(R.layout.simple);
   Log.d("SimpleActivity","OnCreate Ended");
}

0

Achten Sie darauf, dass Ihre Methode zu AppCompatActivity oder Activity gehört .

Es liegt an dem, was Sie in Ihrer Klasse implementiert haben

Wenn Sie einen Lebenszyklus oder andere Überschreibungsmethoden hinzufügen möchten, empfehlen wir Ihnen, auf "Drücken" CTRL+Ooder "Ausführen" Code > Override methodszu klicken. Dort können Sie sehen, wo die Methode hingehört

Screenshot zur Veranschaulichung - Das Dialogfeld "Methoden zum Überschreiben" von Android Studio

Durch die Nutzung unserer Website bestätigen Sie, dass Sie unsere Cookie-Richtlinie und Datenschutzrichtlinie gelesen und verstanden haben.
Licensed under cc by-sa 3.0 with attribution required.