Пробовал все, кроме android finish(); активность не работает

Мы попробовали все, чтобы закончить определенную деятельность, но не смогли этого сделать. Код работает без каких-либо ошибок или предупреждений, которые просто не могут завершить работу. Мы пробовали все решения в stackoverflow вместе с другими форумами. Нужно решение с объяснением.

Действие Android() Не работает

Работа в отделе 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";

    }

Ответ 1

Попытайтесь создать метод в своей Activity, который вызовет finish(). Затем вызовите этот метод изнутри onResponse().

Что-то вроде:

private void killActivity() {
    finish();
}

И тогда назовите это здесь:

if(Boolean.parseBoolean(Flag)) {
    Intent intent=new Intent(PhoneVerificationActivity.this,ConfirmSms.class);
    intent.putExtra("PhoneNumber", Phone);
    startActivity(intent);
    killActivity(); // Here.
}

Ответ 2

Проверьте в своем коде следующее:

1. Правильно ли вы проводите деятельность?

Public class YourActivity extends Activity{
  }

2.если вы правильно выполняете действия, Finish() будет работать правильно.

YourActivity.this.finish();

3.если вы используете Dialogs, вы должны отклонить Dialog до завершения операции

Dialog.dismiss();

Надежда может быть полезной.

Счастливое кодирование :)

Ответ 3

Если вы переносите большие данные в результат намерения, он может не завершить работу. например, когда я помещаю массив байтов на изображение большого размера, финиш не работает, когда я изменяю размер изображения, тот же код работает.