2015-11-04 11 views
9

Chúng tôi đã thử mọi thứ để hoàn thành một hoạt động cụ thể nhưng không thực hiện được. Mã chạy mà không có bất kỳ lỗi hoặc cảnh báo nào không thể hoàn thành hoạt động. Chúng tôi đã thử mọi giải pháp trong stackoverflow cùng với các diễn đàn khác. Cần một giải pháp với lời giải thích.Đã thử mọi thứ nhưng kết thúc android(); hoạt động không hoạt động

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

    } 
+1

Đây có phải là mã bên trong Hoạt động không? – Mauker

+0

Hãy thử điều này 'PhoneVerificationActivity.this.finish();' – Amy

+0

Có bên trong một hoạt động @Mauker – MabrurChowdhury

Trả lời

7

Cố gắng tạo ra một phương pháp trên Activity của bạn mà sẽ gọi finish(). Và sau đó, gọi phương thức này từ trong số onResponse() của bạn.

Cái gì như:

private void killActivity() { 
    finish(); 
} 

Và sau đó, gọi nó là ở đây:

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

Cảm ơn giải pháp đã hoạt động. Tôi đã cố gắng bỏ phiếu cho câu trả lời của bạn nhưng tôi cần 15 đại diện:/ – MabrurChowdhury

+1

Không có vấn đề gì với bạn tôi. Nếu nó giúp chỉ đánh dấu nó là chấp nhận;) Vui mừng nó đã giúp. – Mauker

0

Kiểm tra sau trong mã của bạn

1.Are bạn mở rộng Hoạt động một cách chính xác?

Public class YourActivity extends Activity{ 
    } 

2.if bạn mở rộng hoạt động chính xác, Finish() sẽ hoạt động bình thường.

YourActivity.this.finish(); 

3. Nếu bạn sử dụng Dialogs, bạn nên bỏ qua những Dialog trước khi kết thúc hoạt động

Dialog.dismiss(); 

Hope có thể hữu ích của nó.

Mã hóa hạnh phúc :)

Các vấn đề liên quan