Ciao a tutti, sto realizzando un progetto Android ed ho un problema che spero possiate aiutarmi a risolvere in quanto si tratta sempre di Java. In sostanza io ho una classe Model dove apro all'interno di un thread una connessione ad un server remoto e richiedo una pagina che fa una query e restituisce una stringa. All'interno del metodo che fa tutto questo, all'interno del thread va tutto bene e stampo i dati quindi ho la certezza di averli, devo recuperare questi risultati da un'altra classe "Controller" che utilizza il Model, ma li perdo!!!!
Ho pensato di creare una classe Costanti con dei metodi set e get che uso nel Model, vi faccio vedere il codice, sapreste dirmi secondo voi cosa non va e perchč perdo le variabili?:
Costanti
codice:
public class Costanti {
String regioni="";
public Costanti(){}
public void setRegioni(String regioni){this.regioni=regioni;}
public String getRegioni(){return regioni;}
}
Model
codice:
public void launchService() throws MalformedURLException, IOException {
AsyncTask.execute(new Runnable() {
@Override
public void run() {
String result = null;
StringBuffer sb = new StringBuffer();
InputStream is=null;
URL url = null;
try {
String registrationUrl = "***URL***";
url = new URL(registrationUrl);
URLConnection connection = url.openConnection();
HttpURLConnection httpConnection = (HttpURLConnection) connection;
int responseCode = httpConnection.getResponseCode();
if (responseCode == HttpURLConnection.HTTP_OK) {
try {
is = new BufferedInputStream(connection.getInputStream());
BufferedReader br = new BufferedReader(new InputStreamReader(is));
String inputLine = "";
while ((inputLine = br.readLine()) != null) {
sb.append(inputLine);
}
result = sb.toString();
//c č l'oggetto Costanti dichiarato all'esterno ed č globale
c.setRegioni(result);
}
catch (Exception e) {
Log.e("TAG", "Error reading InputStream");
result = null;
}
finally {
if (is != null) {
try {
is.close();
}
catch (IOException e) {
Log.e("TAG", "Error closing InputStream");
}
}
}
} else {
Log.e("MyApp", "Registration failed for: " + registrationUrl);
}
} catch (Exception ex) {
ex.printStackTrace();
}
}
});
}
Controller
codice:
Model m=new Model();try {
m.launchService();
Costanti c=new Costanti();
Log.e("controller:",c.getRegioni());
}