Ich kodiere eine Android App. Zu einem bestimmten Zeitpunkt wird die App aufgefordert, Daten von einem Web-Service, den ich auf Heroku habe, abzurufen. Die Klasse, die die Methoden enthält, die Daten abrufen, und die Klasse mit den Methoden, die diese Daten verwenden, sind unterschiedlich. Ich versuche, die Daten von einem AsyncTask onPostExecute() an meine andere Klasse über eine Schnittstelle zu übergeben; Allerdings bekomme ich eine nervende NullPointerException und ich verstehe den Grund dafür nicht!Android JAVA - NullPointerException bei der Verwendung und Schnittstelle Feld
Meine "main" Klasse:
public class Details extends AppCompatActivity implements ResponseFromWebService.AsyncResponse {
@Override
public void processFinish(String output){
System.out.println(output);
}
//Other Stuff
}
Meine ResponseFromWebService Klasse:
public class ResponseFromWebService {
public void getData (String Name) {
new JSONTask().execute("censored-URL");
}
public interface AsyncResponse {
void processFinish(String output);
}
public class JSONTask extends AsyncTask<String, String, String> {
AsyncResponse delegate = null;
@Override
protected String doInBackground(String... params) {
HttpURLConnection connection = null;
BufferedReader reader = null;
StringBuffer buffer = new StringBuffer();
try {
URL url = new URL(params[0]);
connection = (HttpURLConnection) url.openConnection();
connection.connect();
InputStream stream = connection.getInputStream();
reader = new BufferedReader(new InputStreamReader(stream));
String line = "";
while ((line = reader.readLine()) != null) {
buffer.append(line);
}
String finalJson = buffer.toString();
JSONObject finalObject = new JSONObject(finalJson);
String Desc = finalObject.getString("desc");
return Desc;
} catch (MalformedURLException e) {
e.printStackTrace();
} catch (IOException e) {
e.printStackTrace();
} catch (JSONException e) {
e.printStackTrace();
} finally {
if (connection != null)
connection.disconnect();
try {
if (reader != null)
reader.close();
} catch (IOException e) {
e.printStackTrace();
}
}
return null;
}
@Override
protected void onPostExecute(String s) {
super.onPostExecute(s);
delegate.processFinish(s);
}
}
}
Die NPE tritt in der letzten Zeile, wenn ein Anruf zu delegate.processFinish(s);
ist
wirklich Hilfe benötigen !
Verwendung Debugger ... –