Also, ich bin ein bisschen ein neues Android-Entwickler, aber ich mache Fortschritte. Ich habe eine MainActivity
, was ich zu booten, und dann eine Reihe von Unteraktivitäten, um etwas Arbeit zu tun.Android zurück von Aktivität
Ich arbeite zZ, um jene Untertätigkeiten heraus zu erhalten und zu MainActivity
zurückzugehen, um zu vermeiden, für immer auf irgendeinem gelegentlichen Fenster zu sitzen. Es ist eine Art von Kiosk
Art von App, an der ich arbeite, daher ist die Rückkehr zu MainActivity
eine Voraussetzung.
Ich konnte dies mit einer Handler and Runnable()
in meiner Unter-Aktivitätsklasse arbeiten. Wenn ich folgendes mache, wenn der Handler das Zeitlimit überschreitet und Runnable.run()
aufgerufen wird, funktioniert das irgendwie.
Intent intent = new Intent(LightsActivity.this, MainActivity.class);
startActivity(intent);
Dies verursacht jedoch MainActivity onCreate
erneut auszuführen. Da MainActivity bereits im Hintergrund ausgeführt wird, möchte ich zu dieser Instanz zurückkehren, anstatt eine neue zu starten.
Was ich denke, ich möchte finish()
in der Runnable aufrufen und es die Aktivität schließen und zurück zu Main. Das funktioniert nicht richtig. Ich sehe MainActivity onStart()
läuft, und nicht onCreate()
, was ich will.
Was auf dem Bildschirm angezeigt wird, ist jedoch das LightsActivity-Design-Layout, aber ohne die LightsActivity
Klasse tatsächlich ausgeführt wird. Ich habe einige Timer in LightsActivity.onCreate()
erstellt, die Felder jede Sekunde aktualisieren, wenn es ausgeführt wird, aber diese funktionieren nicht mehr, nachdem ich finish()
(wieder, erwartet) aufrufen. Was ist der Trick, um eine Aktivitätsklasse zu stoppen und die Benutzeroberfläche wieder in das MainActivity
-Fenster zu ändern?
Ich mache etwas falsch oder das ist ein Fehler. Alle Dokumente sagen finish()
sollten tun, was ich will. Beachten Sie, dass das Aufrufen von LightsActivity.this.finish()
auch nicht in Runnable funktioniert. Es handelt sich also nicht um ein Problem mit dem Umfang, das ich nicht denke.
Ich hoffe, jemand mit vielen Android-Erfahrung kann mir helfen.
public class MainActivity extends Activity {
private static final String TAG = MainActivity.class.getSimpleName();
@Override
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.activity_main);
Log.d(TAG, "onCreate");
}
@Override
protected void onStart() {
super.onStart();
Log.d(TAG, "onStart");
}
@Override
protected void onStop() {
super.onStop();
Log.d(TAG, "onStop");
}
public void viewLights(View view) {
Log.d(TAG, "Managing the lights");
setContentView(R.layout.activity_lights);
startActivity(m_lights);
}
}
public class LightsActivity extends Activity {
private static final String TAG = LightsActivity.class.getSimpleName();
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.activity_lights);
handler.postDelayed(finalizer, 1000 * 10);
Log.d(TAG, "onCreate()");
}
@Override
protected void onStart() {
super.onStart();
Log.d(TAG, "onStart");
}
@Override
protected void onStop() {
super.onStop();
Log.d(TAG, "onStop");
}
@Override
protected void onDestroy() {
super.onDestroy();
Log.d(TAG, "onDestroy");
}
Runnable finalizer = new Runnable()
{
public void run()
{
Log.d(TAG, "Activity timed out");
finish();
}
};
}
Und ich bekomme folgende Ausgabe. Ich kann mit diesem einfachen Beispiel alle anderen Code auskommentieren.
07-19 13:20:37.761 1363-1363/? D/MainActivity: onCreate()
07-19 13:20:37.767 1363-1363/? D/MainActivity: onStart
07-19 13:21:20.280 1363-1363/com.home.pete.aquarium D/MainActivity: Managing the lights
07-19 13:21:20.569 1363-1363/com.home.pete.aquarium D/LightsActivity: onCreate()
07-19 13:21:20.571 1363-1363/com.home.pete.aquarium D/LightsActivity: onStart
07-19 13:21:21.089 1363-1363/com.home.pete.aquarium D/MainActivity: onStop
07-19 13:21:30.579 1363-1363/com.home.pete.aquarium D/LightsActivity: Activity timed out
07-19 13:21:30.615 1363-1363/com.home.pete.aquarium D/MainActivity: onStart
07-19 13:21:31.100 1363-1363/com.home.pete.aquarium D/LightsActivity: onStop
07-19 13:21:31.100 1363-1363/com.home.pete.aquarium D/LightsActivity: onDestroy
Der LightsActivity Bildschirm noch angezeigt wird, nicht die MainActivity.
Sorry, ja, aber das hilft nicht. –
Können Sie bitte einen [mcve] aller zugehörigen Codes erstellen? –
Ich glaube nicht, dass ich hier ein komplettes Minimal, Complete und Verifizierbar posten kann. Der Code selbst, den ich schreiben kann, wird ohne viel Android Studio nicht funktionieren. Sie können jedoch die vollständige Quelle auf meiner https://github.com/buelowp/aquarium Seite sehen. Sie sollten das überprüfen und direkt erstellen können. –