web-dev-qa-db-fra.com

J'ai tout essayé sauf Android finish (); activité ne fonctionne pas

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";

    }
15
MabrurChowdhury

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.
}
12
Mauker

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 :)

1
Venkatesh Selvam

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.

0
Abeer Iqbal