Instanzmethode in einer Instanzmethode möglich?

D

Defcon

Neues Mitglied
0
Hi Developer,
habe ein (nach meiner Meinung) massives Problem im Quellcode und hoffe das ihr mir dabei helfen könnt.

Szenario:
Die Klasse Semesterablaufplan.java soll die Klasse isOnline aufrufen um die Methode isInternetOn auszuführen und dann falls true raus kommt diesen Wert in der If-Anweisung verarbeiten.


Semesterablaufplan.java
package eu.campusapp.android;

import java.util.Calendar;
import eu.campusapp.semesterablaufplan.isOnline;
import android.app.AlertDialog;
import android.os.Bundle;
import android.webkit.WebView;

public class Semesterablaufplan extends Campusapp {

WebView planView;

/* (non-Javadoc)
* @see eu.campusapp.android.tesa#isInternetOn()
*/

@Override
public void onCreate(Bundle ablaufplan) {

int Year, Month;
isOnline online = new isOnline();


if (online.isInternetOn()==true) {

// deklarieren importierte Kalenderdaten
final Calendar c = Calendar.getInstance();
Year = c.get(Calendar.YEAR);
Month = c.get(Calendar.MONTH);
String semester = "";


//bestimmt aktuelle PDF-Datei des Semesterablaufplanes
if (Month >= 9 || Month <= 3 ) {
semester ="WS_" +(Year-2000)+ "-" + (Year-1999);
} else {
semester ="SS_" +(Year-2000);
}


//Link zum aktuellen Semesterablaufplan
String aktuell = "http://docs.google.com/gview?embedded=true&url=" +
"http://www-docs.tu-cottbus.de/studierende/public/files/" +
"Vorlesungsverzeichnis/SA_" +semester+ ".pdf";


//Funktion ruft Link in importierter Webview auf
super.onCreate(ablaufplan);
setContentView(R.layout.semesterablaufplan);
planView = (WebView) findViewById(R.id.ablaufplan);
planView.getSettings().setJavaScriptEnabled(true);
planView.loadUrl(aktuell);
}
else {
super.onCreate(ablaufplan);
new AlertDialog.Builder(this)
.setMessage(R.string.tx_error)
.show();
return;
}
}
}


isOnline.java
package eu.campusapp.semesterablaufplan;

import eu.campusapp.android.Campusapp;
import android.content.Context;
import android.net.ConnectivityManager;
import android.net.NetworkInfo;
import android.net.wifi.WifiManager;

public class isOnline extends Campusapp{


public boolean isInternetOn() {

int i = 0;
int j = 1;


ConnectivityManager connected = (ConnectivityManager) getSystemService(Context.CONNECTIVITY_SERVICE);
WifiManager online = (WifiManager) getSystemService(Context.WIFI_SERVICE);

//Connected & Connecting sind Versions bezogen
if (connected.getNetworkInfo(i).getState() == NetworkInfo.State.CONNECTED // Statustest
|| connected.getNetworkInfo(i).getState() == NetworkInfo.State.CONNECTING
|| connected.getNetworkInfo(j).getState() == NetworkInfo.State.CONNECTING
|| connected.getNetworkInfo(j).getState() == NetworkInfo.State.CONNECTED)
{

return true; // es besteht Internetverbindung

} else if (connected.getNetworkInfo(0).getState() == NetworkInfo.State.DISCONNECTED
|| connected.getNetworkInfo(1).getState() == NetworkInfo.State.DISCONNECTED)
{

return false; // keine Internetverbindung

} else if (online.isWifiEnabled()==true){

return true; //es besteht Wifi-Verbindung

}

return false; // falls keine der Bedinungen zu trifft, wird false ausgegeben
}

}


Beim debuggen verabschiedet er sich in folgender Zeile:
isOnline.java Zeile 18
ConnectivityManager connected = (ConnectivityManager) getSystemService(Context.CONNECTIVITY_SERVICE);

Die Klasse isOnline könnte man natürlich vererben und dann weiter nutzen, jedoch ist dies ja nicht der eigendliche Sinn der Vererbung...

Nach einer Woche vergeblichen ausprobieren, OOP anlesen etc. wende ich mich daher an euch und hoffe ihr könnt mir Helfen :cool2:
 
warum leitest für isonline von campusapp ab?

ich würde hier mal ne statische methode machen
public static boolean isOnline(Context ctx) {
...}

und dadrin dann einfach abchecken und zurück liefern.

ware ja das einfachste oder ?
 
öhm...moment^^, wird gleich ausprobiert :)
 
Ok wenn ich die Methode statisch deklariere und die extends raus baller, meckert er bei:
ConnectivityManager connected = (ConnectivityManager) getSystemService(Context.CONNECTIVITY_SERVICE);
WifiManager online = (WifiManager) getSystemService(Context.WIFI_SERVICE);

dammed muss doch irgend ne Lösung dafür geben :(
 
naja schau dir halt die fehlermeldung an.

deshalb übergeb ich ja den context der statischen methode. na klingelts?
 
  • Danke
Reaktionen: Defcon
Er sagt logischerweise, dass es die Methode getSystemService nicht gibt.

Soweit ich dich jetzt verstanden habe, willst du eine neue Methode bauen wo wir unseren Connections abfragen, diese dann als wert zurück geben und in der Methode isInternetOn() einsetzen.
Aber dadurch könnte ich ja logischerweise meine IF-Anweisung übern haufen werfen oder?

Falls ich dich missverstehe bitte korrigieren^^
 
Ok erster Teilerfolg ist schonma da :)
Habe die Instanzrn vom ConnectivityManager und Wifimanager nach Semesterablaufplan überführt und die Parameter dann an isInternetOn übergeben. funtzt soweit :)

Danke nochmal swordi :)
 

Ähnliche Themen

D
  • Data2006
Antworten
14
Aufrufe
484
jogimuc
J
OnkelLon
Antworten
13
Aufrufe
1.974
OnkelLon
OnkelLon
A
Antworten
10
Aufrufe
1.018
swa00
swa00
Zurück
Oben Unten