Ich beabsichtige, co.user_id an die öffentliche statische Zeichenfolge USER_ID zu übergeben, damit die Daten in der Zeichenfolge user_id von der onPostExecute-Funktion an eine andere Klasse gesendet werden können. Von der anderen Klasse erhalte ich jedoch den Wert null, was bedeutet, dass der Wert nicht an diese Klasse gesendet wurde. Wie soll ich meinen Wert in String speichern, damit der Wert auch in einer anderen Klasse verfügbar ist?Wie übergebe ich Daten in einen String, wo der String in einer anderen Klasse zugänglich ist?
public class connect3 extends AsyncTask<String, Void, String> {
View view;
Activity activity;
public static String USER_ID = " ";
public connect3(Activity activity, View v) {
this.activity = activity;
view = v;
}
String convertStreamToString(InputStream is) {
try {
return new java.util.Scanner(is).useDelimiter("\\A").next();
} catch (java.util.NoSuchElementException e) {
return "";
}
}
protected String doInBackground(String... arg0) {
String ipAddress = "http://192.168.1.3/apexStore2/";
try {
URL url = new URL(ipAddress +"receipts.php");
String urlParameters =
URLEncoder.encode("user_name", "UTF-8") + "=" +
URLEncoder.encode(arg0[0], "UTF-8") + "&" +
URLEncoder.encode("user_id", "UTF-8") + "=" +
URLEncoder.encode("???", "UTF-8");
HttpURLConnection connection = (HttpURLConnection)
url.openConnection();
connection.setRequestMethod("POST");
connection.setRequestProperty("Content-Type",
"application/x-www-form-urlencoded");
connection.setRequestProperty("Content-Length", "" +
Integer.toString(urlParameters.getBytes().length));
connection.setRequestProperty("Content-Language", "en-US");
connection.setUseCaches(false);
connection.setDoInput(true);
connection.setDoOutput(true);
//Send request
DataOutputStream wr = new DataOutputStream (
connection.getOutputStream());
wr.writeBytes (urlParameters);
wr.flush();
wr.close();
//Get Response
InputStream is = connection.getInputStream();
BufferedReader rd = new BufferedReader(new InputStreamReader(is));
String line;
StringBuffer response = new StringBuffer();
while((line = rd.readLine()) != null) {
response.append(line);
response.append('\r');
}
rd.close();
//System.out.println(response.toString());
JSONObject mainObject = new JSONObject(response.toString());
JSONArray uniObject = mainObject.getJSONArray("results");
for(int i = 0; i < uniObject.length(); i++) {
ContactReceipt co = new ContactReceipt();
JSONObject rowObject = uniObject.getJSONObject(i);
//EventObject co = new EventObject();
co.user_id = rowObject.getString("user_id");
USER_ID = co.user_id;
System.out.println("hi1" + co.user_id);
}
//To further break down JSON
//JSONObject oneObject = mainObject.getJSONObject("1");
//String id = oneObject.getJSONObject("id");
try{
}
finally{
connection.disconnect();
}
} catch (Exception e){
System.out.println(e.toString());
}
return USER_ID;
//return "";
}
protected void onPreExecute(){
}
@Override
protected void onPostExecute(String result){
// receipt1.user_id = user_id;
// String search = USER_ID;
// Intent intent = new Intent(activity.getApplication(),receipt1.class);
//intent.putExtra(USER_ID, search);
//activity.startActivity(intent);
Intent intent = new Intent(activity.getApplication(),receipt1.class);
intent.putExtra("USER_ID", result);
activity.startActivity(intent);
}
}
So nenne ich den Wert in einer anderen Klasse.
Intent intent = getIntent();
String cats = intent.getStringExtra("USER_ID");
Sie im 'doInBackground Rückkehr mehrere Werte müssen erhalten()' und seine seltsamen Sie es mit einem einzelnen String überschreiben. Sie sollten hier arrayList verwenden, um alle Werte abzurufen. –
Bitte reduzieren Sie Ihr Codebeispiel auf ein Minimum, bei dem das Problem weiterhin besteht. Als Nebenbemerkung ist das Übergeben von Ergebnissen durch ein öffentliches statisches Feld auf vielen Ebenen eine schreckliche Idee. Da Sie ja über 'Intent's sprechen, nehme ich an, dass dies mit der Android-Entwicklung zusammenhängt - bitte kennzeichnen Sie es als solches. – CptBartender
so für die Array-Liste sollte ich es wie ArrayList geschrieben list = new ArrayList (); list.add (co.user_id) ;. –