Passage variable AsyncTask + son bon fonctionnement
Bonjour,
Je développe actuellement une application android en java avec android sudio.
Je cherche à faire un système d'inscription, pour cela j'ai une activité register avec 3 EditText (Pseudo, mail, mdp) , un bouton inscription ainsi qu'un TextView vide (Affichant un message d'erreur si il y a).
Register contient ce code:
Code:
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 50 51 52 53 54
| import android.support.v7.app.AppCompatActivity;
import android.os.Bundle;
import android.view.View;
import android.view.WindowManager;
import android.widget.Button;
import android.widget.EditText;
import android.widget.TextView;
public class register extends AppCompatActivity {
@Override
public void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
getWindow().setFlags(WindowManager.LayoutParams.FLAG_FULLSCREEN, WindowManager.LayoutParams.FLAG_FULLSCREEN);
setContentView(R.layout.activity_register);
Button button;
button = (Button) findViewById(R.id.register);
//on applique un écouteur d'événement au clique sur le bouton
button.setOnClickListener(
new View.OnClickListener() {
public void onClick(View v) {
String result = "";
EditText pseudo = (EditText)findViewById(R.id.pseudo);
final String vpseudo = pseudo.getText().toString();
EditText mail = (EditText)findViewById(R.id.mail);
String vmail = mail.getText().toString();
EditText mdp = (EditText)findViewById(R.id.mdp);
String vmdp = mdp.getText().toString();
final TextView erreurtxt = (TextView) findViewById(R.id.erreur);
new fond().execute();
}
}
);
}
} |
Donc à l'appuie du bouton la tache de fond (AsyncTask) s’exécute.
La tache de fond:
Code:
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 50 51 52 53 54 55 56 57 58 59 60 61 62 63 64 65 66 67 68 69 70 71 72 73 74 75 76 77
| import android.os.AsyncTask;
import org.apache.http.HttpEntity;
import org.apache.http.HttpResponse;
import org.apache.http.NameValuePair;
import org.apache.http.client.HttpClient;
import org.apache.http.client.entity.UrlEncodedFormEntity;
import org.apache.http.client.methods.HttpPost;
import org.apache.http.impl.client.DefaultHttpClient;
import org.apache.http.message.BasicNameValuePair;
import org.json.JSONObject;
import java.io.InputStream;
import java.io.BufferedReader;
import java.io.InputStreamReader;
import java.util.ArrayList;
class fond extends AsyncTask<Void, Integer, String> {
protected void onPreExecute(String... param) {
}
protected String doInBackground(Void... arg0) {
JSONObject jObj;
ArrayList<NameValuePair> vrequete = new ArrayList<NameValuePair>();
vrequete.add(new BasicNameValuePair("pseudo", "test"));
vrequete.add(new BasicNameValuePair("mail", "test"));
vrequete.add(new BasicNameValuePair("mdp", "test"));
try {
HttpClient httpclient = new DefaultHttpClient();
HttpPost httppost = new HttpPost("http://192.168.1.16/android/register.php");
httppost.setEntity(new UrlEncodedFormEntity(vrequete));
HttpResponse response = httpclient.execute(httppost);
HttpEntity entity = response.getEntity();
InputStream is = entity.getContent();
BufferedReader reader = new BufferedReader(new InputStreamReader(is, "iso-8859-1"), 8);
StringBuilder sb = new StringBuilder();
String line = reader.readLine();
sb.append(line + "\n");
is.close();
String result = sb.toString();
jObj = new JSONObject(result);
} catch (Exception e) {
e.printStackTrace();
}
return null;
}
protected void onProgressUpdate(Integer... a) {
}
protected void onPostExecute() {
// erreurtxts.setText("Fin traitement");
}
} |
Ce que je cherche à faire:
-Passer les variables des edittext (Déclarés dans l'activité register), ainsi que le TextView (Pour modifier le texte affiché dans l'AsyncTask) en les rendant accessible partout dans la classe.
-Bien paramètre l'AsyncTask (Je débute, je ne vois donc pas les imperfection majeurs)
-Si possible trouver un moyen de permettre à l'utilisateur de refaire une requête après une déjà faites
Je me tourne vers vous car après des heures d'acharnement je reste bloqué.
Ps: Je débute, donc un peu d'indulgence ;) Et j’espère être dans la bonne catégorie.