Neues Fenster bei Bildschirmorientierung

  • Antworten:2
  • Bentwortet
Hermann S.
  • Forum-Beiträge: 45

29.04.2011, 13:38:40 via Website

Hallo, mir ist aufgefallen, dass sobald der Bildschirm um orientiert wird, ein neues Fenster der selben Activity geöffnet wird. Mein Code sieht stark vereinfacht folgendermaßen aus.

1...
2int i=0;
3...
4 protected void onCreate(Bundle savedInstanceState) {
5 super.onCreate(savedInstanceState);
6 setContentView(R.layout.main);
7
8 Intent connectionError = new Intent(getApplicationContext(), ConnectionError.class);
9 connectionError.putExtra("ConnectionMessage", "Fenster: "+i++);
10 startActivity(connectionError);
11 removeDialog(0);
12 }

Ich vermute, dass beim ändern der Bildschirmorientierung die onCreate Methode aufgerufen wird und mit new Intent() ein neues Fenster entsteht. Seltsam ist, dass die Variable i dabei nicht erhöht wird. Naja, wie verhindert man einen neuen Intent wenn das Fenster bereits offen ist?

Antworten
Rafael K.
  • Forum-Beiträge: 2.359

29.04.2011, 14:04:30 via Website

Bei Drehung des Geräts wird standardmäßig eine neue Instanz der Activity erzeugt und alles komplett neu initialisiert.

Das kann man aber auch im Manifest abstellen, wenn man will:

http://stackoverflow.com/questions/456211/activity-restart-on-rotation-android

Antworten
Hermann S.
  • Forum-Beiträge: 45

29.04.2011, 19:38:53 via Website

Mit einer neuen Instanz der Activity hab ich garnicht gerechnet, erklärt auch das Rätsel mit der Lauf-variable. Der Hinweis hat sehr geholfen, danke :)
Ich hab das jetzt mit einer Trigger-Variable in der Applikation Klasse gelöst, funktioniert soweit ganz gut, es gibt aber sicher schönere Lösungen. Ich werde mir die Konfigurationen der Manifest genauer anschauen.

EDIt:
Die Konfiguration android:configChanges="orientation|keyboardHidden" hat geholfen, jetzt braucht man auch keine Triggervariable :)

— geändert am 04.05.2011, 12:24:22

Antworten