2017-06-28 3 views
0

Ich habe in einem Fragment ein Ereignis OnfocuChangeListener für einen EditText. Ich habe programmiert, dass, wenn es keinen Fokus hat, auf einer entfernten DB suchen, um zu überprüfen, ob der Benutzer existiert. Im Listener erstelle ich den ProgressDialog. Wenn ich den Fokus im EditText habe und ich in die Landschaft übergehe, stürzt es ab, wenn .dismiss() der ProgressDialog. Irgendeine Idee?Absturz, wenn ich in Landschaft ändere OnFocusChangeListener

txtUsuario.setOnFocusChangeListener(new View.OnFocusChangeListener() { 
      @Override 
      public void onFocusChange(View view, boolean hasFocus) { 
       final ProgressDialog pDialog = new ProgressDialog(getContext()); 
       if (!hasFocus) { 

        pDialog.setMessage("Comprobando si existe usuario..., espere."); 
        pDialog.show(); 

        strq = new StringRequest(Request.Method.POST, url_user, new Response.Listener<String>() { 
         @Override 
         public void onResponse(String response) { 
          try { 
           JSONObject mainObject = new JSONObject(response); 
           String responseString = mainObject.getString("success"); 

           //SI SE REALIZÓ LA GRABACIÓN 
           if (responseString.equals("1")) { 
            pDialog.dismiss(); 
            Toast.makeText(getContext(), "Ya existe ese usuario, elija otro", Toast.LENGTH_LONG).show(); 
            txtUsuario.setText(""); 
            txtUsuario.requestFocus(); 
           } else { 
            // **** HERE CRASH **** 
            pDialog.dismiss(); 
           } 

          } catch (JSONException e) { 
           pDialog.dismiss(); 
           e.printStackTrace(); 
          } 
          //pDialog.dismiss(); 
         } 
        }, new Response.ErrorListener() { 
         @Override 
         public void onErrorResponse(VolleyError error) { 
          pDialog.dismiss(); 
          Toast.makeText(getContext(), "Error del servidor: " + error, Toast.LENGTH_SHORT).show(); 
         } 
        }) { 
         @Override 
         protected Map<String, String> getParams() { 
          Map<String, String> parametros = new HashMap<>(); 
          parametros.put("usuario", txtUsuario.getText().toString()); 
          return parametros; 
         } 
        }; 
        rqt.add(strq); 
       } 
      } 
     }); 

Antwort

0

Endlich fand ich Muself eine Lösung. Ich habe ein boolean = false erstellt. Und onPause ändere ich den Wert auf True und NOT onFocusChangeListener, wenn der Wert wahr ist.

Der einzige Weg, den ich finden konnte.

Verwandte Themen