2015-11-04 11 views
9

Abbiamo provato di tutto per terminare un'attività particolare ma non ci siamo riusciti. Il codice funziona senza errori o avvisi, non è possibile terminare l'attività. Abbiamo provato tutte le soluzioni in stackoverflow insieme ad altri forum. Hai bisogno di una soluzione con spiegazione.Ho provato tutto tranne Android(); attività non funzionante

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

Questo codice è all'interno di un'attività? – Mauker

+0

Prova questo 'PhoneVerificationActivity.this.finish();' – Amy

+0

Sì è all'interno di un'attività @Mauker – MabrurChowdhury

risposta

7

tenta di creare un metodo sul tuo Activity che chiamerà finish(). Quindi, chiama questo metodo dal tuo onResponse().

Qualcosa di simile:

private void killActivity() { 
    finish(); 
} 

E poi, lo chiamano qui:

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

Grazie per la soluzione ha funzionato. Ho provato a votare la tua risposta, ma ho bisogno di 15 ripetizioni:/ – MabrurChowdhury

+1

Nessun problema amico mio. Se ha aiutato a segnarlo come accettato;) Sono contento che l'abbia aiutato. – Mauker

0

Verificare quanto segue nel codice

1.Are si estende correttamente attività?

Public class YourActivity extends Activity{ 
    } 

2.se si estende correttamente l'attività, Fine() funzionerà correttamente.

YourActivity.this.finish(); 

3.if si utilizza finestre di dialogo, è necessario chiudere la finestra prima di terminare l'attività

Dialog.dismiss(); 

La speranza può essere il suo utile.

Happy Coding :)

Problemi correlati