Aufruf StartActivity

  • Antworten:1
Mario W
  • Forum-Beiträge: 9

17.04.2014, 09:13:42 via Website

Hallo zusammen, sry wegen des nicht gerade aussagekräftigen Titels. Ich wollte fragen, wie das mit startActivity funktioniert.

Wenn ich den Aufruf beispielsweise aus eine TestActivity folgendermaßen mache, funktioniert alles:

startActivity(new Intent(TestActivity.this, Test2Activity.class));

Wenn ich jetzt aber aus einer anderen Activity mit dem Namen Test100 exakt den gleichen aufruf machen möchte, dann geht das voll in die Hose. Dann bekomme ich diese Meldung: "no enclosing instance of the type is accessible in scope"

Kurzum ich möchte eine Activität aus einer anderen schließen und eine neue aufrufen.

Verständlich? Grund für dieses Vorgehen ist eine Kommunikation mit einem Gerät über USB

Danke

MfG

Antworten
impjor
  • Forum-Beiträge: 1.793

17.04.2014, 18:25:45 via App

Das ist das Problem, wenn man nicht genau weiß, was man da genau macht.

startActivity(new Intent(TestActivity.this, Test2.class));

zuerst die Funktion startActivity(). Die startet eine Activity, diese zu startende Activity wird durch einen Intent festgelegt. So weit so gut. Wir brauchen also einen Intent: new Intent(...) Als ersten Parameter brauchen wir ein Context-Objekt. Woher nehmen? Einen Context kann man nicht einfach so per new erzeugen, aber die Klasse Activity leitet sich von Context ab. (erbt von Context). Auch die Test-Klasse erbt von Activity und somit auch von Context. Wir können also einfach this als Context übergeben. Warum aber dann TestActivity.this? Öfters braucht man mal startActivity(...) in einem OnClickListener (z.B.). würde man dann this übergeben, würde man einen OnClickListener und keine Activity/Context übergeben = Fehler. Um innerhalb eines OnClickListener trotzdem die Activity zu übergeben nutzt man Klassenname.this, also TestActivity.this Wenn du jetzt aber in einer anderen Activity die Test100 heißt diesen Aufruf startest, musst du entsprechend das this von Test100 benutzen. Der zweite Parameter von new Intent() ist ein Class-Objekt der entsprechenden aufzurufen Activity, das sollte klar sein.

Liebe Grüße impjor.

Für ein gutes Miteinander: Unsere Regeln
Apps für jeden Einsatzzweck
Stellt eure App vor!

Antworten