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.
quelle
Antworten:
Was mir passiert ist, war, dass ich die falsche
onCreate
Methode außer Kraft gesetzt habe . Ich habe überschrieben,public void onCreate(Bundle savedInstanceState, PersistableBundle persistentState)
als ich wirklich überschreiben mussteprotected void onCreate(@Nullable Bundle savedInstanceState)
. Vielleicht hilft das jemandem!quelle
public void onCreate
!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.
quelle
Dies hängt nicht mit diesem bestimmten Problem zusammen, kann aber auch auftreten, wenn die Aktivität nicht in der Manifestdatei deklariert ist.
quelle
entfernen Sie android: launchMode = "singleTask" aus dem Manifest
quelle
Sie müssen die
super.onCreate(savedState)
Methode aufrufen . Schauen Sie sich das Aktivitätsdokument an .public void onCreate(Bundle savedState) { super.onCreate(savedState); }
quelle
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"); }
quelle
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+O
oder "Ausführen"Code > Override methods
zu klicken. Dort können Sie sehen, wo die Methode hingehörtquelle