Démarrer une activité depuis une AsyncTask
Bonjour à vous.
Je suis en train d'apprendre le développement Android, et, très mauvais en Java, je m'arrache depuis ce matin les cheveux sur un point qui doit être simple malgré tout.
Mon activité FullScreenActivity est un login (deux champs textes) et le bouton Connexion appelle donc une seconde activity ParlezVousTask. Jusque là, tout va bien, mais j'aimerais démarrer une troisième activity (MenuActivity) sur onPostExecute() de cette task, et c'est là que je bloque.
Les posts et tutos que j'ai pu parcourir indiquent qu'il faut utiliser la méthode startActivity(), mais j'ai l'erreur suivante:
The method startActivity(Intent) is undefined for the type ParlezVousTask.
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 78 79 80 81 82 83 84 85 86 87 88 89 90 91 92 93 94 95 96 97 98 99 100 101 102 103 104 105 106 107
| package com.example.appandroid;
import android.app.Activity;
import android.content.Intent;
import android.os.Bundle;
import android.util.Log;
import android.view.View;
import android.view.View.OnClickListener;
import android.widget.Button;
import android.widget.EditText;
import android.widget.ProgressBar;
import android.widget.Toast;
import com.example.appandroid.util.SystemUiHider;
/**
* An example full-screen activity that shows and hides the system UI (i.e.
* status bar and navigation/system bar) with user interaction.
*
* @see SystemUiHider
*/
public class FullscreenActivity extends Activity {
private static final String TAG = "Toto";
private EditText input_login;
private EditText input_pass;
private ProgressBar progressbar;
private String login;
private String pass;
@Override
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.activity_fullscreen);
Log.i(TAG, "onCreate!");
input_login = (EditText) findViewById(R.id.input_login);
input_pass = (EditText) findViewById(R.id.input_pass);
progressbar = (ProgressBar) findViewById(R.id.progressBar);
Button button_effacer = (Button) findViewById(R.id.button_clear);
button_effacer.setOnClickListener(new OnClickListener() {
@Override
public void onClick(View v) {
// TODO Auto-generated method stub
input_login.setText("");
input_pass.setText("");
}
});
Button button_valider = (Button) findViewById(R.id.button_send);
button_valider.setOnClickListener(new OnClickListener() {
@Override
public void onClick(View v) {
// TODO Auto-generated method stub
login = input_login.getText().toString();
pass = input_pass.getText().toString();
new ParlezVousTask(progressbar, login, pass).execute(login, pass);
Toast.makeText(FullscreenActivity.this, "Toast !", Toast.LENGTH_SHORT).show();
}
});
}
@Override
protected void onDestroy() {
Log.i(TAG, "onDestroy!");
// TODO Auto-generated method stub
super.onDestroy();
}
@Override
protected void onPause() {
Log.i(TAG, "onPause!");
// TODO Auto-generated method stub
super.onPause();
}
@Override
protected void onRestoreInstanceState(Bundle savedInstanceState) {
// TODO Auto-generated method stub
Log.i(TAG, "onRestoreInstanceState!");
super.onRestoreInstanceState(savedInstanceState);
}
@Override
protected void onResume() {
// TODO Auto-generated method stub
Log.i(TAG, "onResume!");
super.onResume();
}
@Override
protected void onSaveInstanceState(Bundle outState) {
// TODO Auto-generated method stub
Log.i(TAG, "onSaveInstanceState!");
super.onSaveInstanceState(outState);
}
@Override
public void startActivity(Intent intent) {
// TODO Auto-generated method stub
super.startActivity(intent);
}
} |
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
| package com.example.appandroid;
import java.io.InputStream;
import org.apache.http.HttpResponse;
import org.apache.http.client.HttpClient;
import org.apache.http.client.methods.HttpGet;
import org.apache.http.impl.client.DefaultHttpClient;
import android.app.Activity;
import android.content.Intent;
import android.sax.StartElementListener;
import android.view.View;
import android.widget.ProgressBar;
import android.widget.Toast;
public class ParlezVousTask extends android.os.AsyncTask<String, Void, Boolean> {
private final ProgressBar loading;
private ProgressBar progressbar;
private String login;
private String pass;
public ParlezVousTask(ProgressBar loading, String login, String pass) {
this.loading = loading;
this.login = login;
this.pass = pass;
}
@Override
protected Boolean doInBackground(String... params) {
String login = params[0];
String pass = params[1];
// TODO Auto-generated method stub
HttpClient mClient = new DefaultHttpClient();
HttpGet get = new HttpGet("http://***/connect/"
+ login + "/" + pass);
try {
HttpResponse res = mClient.execute(get);
InputStream content = res.getEntity().getContent();
String contentString = InputStreamToString.convert(content);
} catch (Exception e) {
e.printStackTrace();
}
return null;
}
@Override
protected void onPostExecute(Boolean result) {
loading.setVisibility(View.INVISIBLE);
ParlezVousTask.startActivity(new Intent(ParlezVousTask, MenuActivity.class));
}
@Override
protected void onPreExecute() {
loading.setVisibility(View.VISIBLE);
}
} |
Merci d'avance si vous pouviez m'aider à me débloquer. Je commence à tout mélanger et je ne comprends pas non plus pourquoi quelque chose du type New MenuActivity(...) ne fonctionne pas.
Bien cordialement.