The constructor WifiManager() is not visible

  • Antworten:9
  • Bentwortet
Kevin
  • Forum-Beiträge: 2

08.04.2014, 20:10:17 via Website

Hallo liebes Forum,

vor kurzem habe ich angefangen mich mit der App-Programmierung für Android zu befassen. Das Tutorial von Video2Brain hat mir dabei sehr geholfen.
Nun widme ich mich meinem ersten eigenem Projekt. Dazu brauche ich eine Klasse mit der Superclass WifiManager. Diese habe ich erstellt, bekomme jedoch die Fehlermeldung die im Titel angegeben ist. Google konnte mir dabei nicht helfen.

Was bedeutet diese Fehlermeldung?
Auf developer.android.com habe ich folgendes zu der Klasse gefunden:
"This class provides the primary API for managing all aspects of Wi-Fi connectivity. Get an instance of this class by calling Context.getSystemService(Context.WIFI_SERVICE)."
Was ist damit gemeint?

Anhängend ein Screenshot zu der Fehlermeldung.



Vielen Dank im Voraus!

— geändert am 08.04.2014, 20:13:41

Antworten
Stefan Reichenbach
  • Forum-Beiträge: 45

08.04.2014, 21:13:50 via App

Wozu willst du einen eigenen WifiManager implementieren? Du kannst dir über das Beispiel eine Instanz besorgen und damit arbeiten.

Der Compiler Fehler sagt aus, dass der Standard Konstruktor der Manager Klasse nicht Public ist. Da du keinen eigenen Konstruktor definierst, wird der Standard Konstruktor deiner Klasse mit super() diesen aufrufen.

Antworten
Fabian Simon
  • Forum-Beiträge: 359

09.04.2014, 08:10:31 via Website

oder anders gesagt lege noch einen Standart konstruktor an und rufer super auf

Antworten
Mac Systems
  • Forum-Beiträge: 1.727

09.04.2014, 08:29:43 via Website

Der sinn der System Services ist sich diese einfach nur über #getSystemService zu besorgen.

PS: Wenn man eine Klasse "extends" musst du zumindest einen Konstruktor überschreiben, das wird hier angemeckert. Java Basics. Der Konstruktor wird aber "package private" sein, so das du die Sichtbarkeit nicht einfach heraufsetzen kannst.

— geändert am 09.04.2014, 08:31:35

Windmate HD, See you @ IO 14 , Worked on Wundercar, Glass V3, LG G Watch, Moto 360, Android TV

Antworten
impjor
  • Forum-Beiträge: 1.793

09.04.2014, 19:22:23 via App

Der Konstruktor des WifiManagers ist public, erwartet aber einen Context und einen IWifiManager.

Trotzdem macht es überhaupt keinen Sinn, selber eine Klasse zu erstellen, die von WifiManager erbt. Das lässt daraus schließen, dass der TO nicht ganz die Doku verstanden hat.
Was man stattdessen tun sollte, hat @MacSystems ja schon gesagt.

Liebe Grüße impjor.

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

Antworten
Kevin
  • Forum-Beiträge: 2

09.04.2014, 19:48:15 via Website

Ihr habt recht. Das war Blödsinn was ich machen wollten. Ich muss wohl noch ein paar Tutorials durchnehmen.
Lösung ist ganz einfach:

1WifiManager wm = (WifiManager) getSystemService(Context.WIFI_SERVICE);

Danke an alle!

Antworten
Stefan Reichenbach
  • Forum-Beiträge: 45

09.04.2014, 22:13:26 via App

Fabian Simon
oder anders gesagt lege noch einen Standart konstruktor an und rufer super auf

Das hätte genau den gleichen Effekt, wie bereits ohne expliziten Konstruktor...

Antworten
Fabian Simon
  • Forum-Beiträge: 359

10.04.2014, 08:36:38 via Website

@Stefan R
Nein ...
ob Sinn oder nicht sei mal dahingestellt aber wenn ich im Standart konstruktor mit super den Überladenen Konstruktor der Veterklasse aufrufe ist das syntaktisch korrekt und es könnte kompiliert werden.

— geändert am 10.04.2014, 09:46:16

Antworten
impjor
  • Forum-Beiträge: 1.793

10.04.2014, 14:12:07 via App

Problem ist nur, dass der Super-Konstruktor zwei Objekte verlangt, von denen du zumindest eines nicht hast. (s.o.)
Folglich kannst du so keinen Konstruktor erstellen.

Liebe Grüße impjor.

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

Antworten