Nous avons tout essayé pour terminer une activité en particulier, mais sans succès. Le code s'exécute sans erreur ni avertissement, mais je ne peux pas terminer l'activité. Nous avons essayé toutes les solutions de stackoverflow avec d'autres forums. Besoin d'une solution avec des explications.
Android finish () Activité ne fonctionne pas
L'activité de finition Android ne fonctionne pas
Contexte d'activité de finition Android
public void HttpSmsRequest(final String Phone){
final ProgressDialog pDialog = new ProgressDialog(this);
pDialog.setMessage("Loading...";
pDialog.show();
Map<String, String> jsonParams = new HashMap<String, String>();
// jsonParams.put("param1", youParameter);
jsonParams.put("Phone", Phone);
//jsonParams.put("rememberMe", "true";
JsonObjectRequest myRequest = new JsonObjectRequest(
Request.Method.POST,
AppGlobal.Host+"PhoneVerification/sendSms",
new JSONObject(jsonParams),
new Response.Listener<JSONObject>() {
@Override
public void onResponse(JSONObject response) {
try
{
Log.v("Success", "success: " + response.toString());
//MessageBox.Show(ProfileInfoActivity.this, "Response: " + response.toString());
pDialog.dismiss();
JSONObject obj=new JSONObject(response.toString());
// String ID=obj.getString("ID";
String Flag=obj.getString("Flag";
String Message=obj.getString("Message";
// Context context = getApplicationContext();
//
/// appPrefs.setUserIdentity(Integer.parseInt(ID));
if(Boolean.parseBoolean(Flag))
{
Intent intent=new Intent(PhoneVerificationActivity.this,ConfirmSms.class);
intent.putExtra("PhoneNumber", Phone);
//intent.setFlags(intent.getFlags() | Intent.FLAG_ACTIVITY_NO_HISTORY);
startActivity(intent);
finish();
return;
//finishActivity(Activity.RESULT_OK);
}
}
catch (Exception ex)
{
MessageBox.Show(context, ex.getMessage());
}
// verificationSuccess(response);
}
},
new Response.ErrorListener() {
@Override
public void onErrorResponse(VolleyError error) {
//Log.v("Success", "Error: " + error.networkResponse.statusCode);
if (error instanceof TimeoutError || error instanceof NoConnectionError) {
MessageBox.Show(PhoneVerificationActivity.this, "Error: " + error.toString());
AppController.getInstance().getRequestQueue().cancelAll("tag_json_obj";
}
pDialog.dismiss();
//verificationFailed(error);
}
}) {
@Override
public Map<String, String> getHeaders() throws AuthFailureError {
Map headers = new HashMap();
if (!Preference.getInstance().getCookie().equals("")
headers.put("Cookie", Preference.getInstance().getCookie());
return headers;
}
/*@Override
protected Response<JSONObject> parseNetworkResponse(NetworkResponse response) {
Map headers = response.headers;
String cookie = headers.get("Set-Cookie".toString();
Preference.getInstance().saveCookie(cookie);
// MyApp.get().checkSessionCookie(response.headers);
Log.v("Success", "Response"+response.headers.toString());
return super.parseNetworkResponse(response);
}*/
};
AppController.getInstance().addToRequestQueue(myRequest, "tag_json_obj";
}
Essayez de créer une méthode sur votre Activity
qui appellera finish()
. Et ensuite, appelez cette méthode depuis onResponse()
.
Quelque chose comme:
private void killActivity() {
finish();
}
Et ensuite, appelez-le ici:
if(Boolean.parseBoolean(Flag)) {
Intent intent=new Intent(PhoneVerificationActivity.this,ConfirmSms.class);
intent.putExtra("PhoneNumber", Phone);
startActivity(intent);
killActivity(); // Here.
}
Vérifiez les éléments suivants dans votre code
1.Est-ce que vous prolongez l'activité correctement?
Public class YourActivity extends Activity{
}
2.Si vous étendez l'activité correctement, Finish () fonctionnera correctement.
YourActivity.this.finish();
3.si vous utilisez des boîtes de dialogue, vous devez fermer la boîte de dialogue avant de terminer l'activité
Dialog.dismiss();
L'espoir peut être utile.
Bonne codage :)
Si vous transférez des données volumineuses dans un résultat intentionnel, l'activité risque de ne pas s'achever. Par exemple, lorsque je mets un tableau d'octets sur une image de grande taille, la finition ne fonctionne pas, mais je modifie le même code.