【问题标题】:Tried everything but android finish(); activity not working尝试了所有方法,但 android finish();活动不工作
【发布时间】:2016-02-04 12:19:13
【问题描述】:

我们尽一切努力完成一项特定活动,但未能如愿。代码运行没有任何错误或警告只是无法完成活动。我们与其他论坛一起尝试了 stackoverflow 中的所有解决方案。需要有解释的解决方案。

Android finish() Activity Not working

Android finishing activity not working

android finish activity context

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

    }

【问题讨论】:

  • 这段代码是否在 Activity 中?
  • 试试这个PhoneVerificationActivity.this.finish();
  • 是的,它在一个活动中@Mauker
  • 试过那个太艾米但没用@艾米
  • 你的ConfirmSms 开始了吗?

标签: java android android-activity


【解决方案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.
}

【讨论】:

  • 感谢它的解决方案。我试图投票赞成你的答案,但我需要 15 次代表:/
  • 你没有解释原因吗?
【解决方案2】:

在您的代码中检查以下内容

1.你是否正确扩展了Activity?

Public class YourActivity extends Activity{
  }

2.如果你正确地扩展了activity,Finish()将会正常工作。

YourActivity.this.finish();

3.如果你使用对话框,你应该在完成活动之前关闭对话框

Dialog.dismiss();

希望可能会有所帮助。

快乐编码:)

【讨论】:

    【解决方案3】:

    如果您在意图结果中传输大数据,则它可能无法完成活动。 例如,当我将字节数组放在大尺寸的图像上时,完成不工作,当我改变图像大小时,相同的代码工作。

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 2019-06-22
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2015-09-21
      相关资源
      最近更新 更多