2017-06-14 67 views
1

我希望有一个进度对话框,显示登录时用户... 我必须有遵循不同的解决方案,但仍显示我DIS 错误登录进度对话框,提示错误

窗口管理器:android.view.WindowLeaked:活动COM .example.mariamhp.inicrepot.login泄露了最初在此处添加的窗口com.android.internal.policy.impl.PhoneWindow $ DecorView {1ebb896b VE .... R ...... D 0,0-729,322}

 bLogin.setOnClickListener(new View.OnClickListener() { 
     @Override 
     public void onClick(View v) { 
      final String username = etUsername.getText().toString(); 
      final String password = etPassword.getText().toString(); 


      if(username.length()==0){ 
       etUsername.requestFocus(); 
       etUsername.setError("FIELD CANNOT BE EMPTY"); 
      } 
      else if(!username.matches("[0-1a-zA-Z]+")) 
      { 
       etUsername.requestFocus(); 
       etUsername.setError("ENTER ONLY ALPHANUMIRIC CHARACTER"); 
      } 
      else if(password.length()==0) 
      { 
       etPassword.requestFocus(); 
       etPassword.setError("FIELD CANNOT BE EMPTY"); 
      }else { 
       final ProgressDialog progresRing = ProgressDialog.show(login.this, "Login in", "Please Wait...", true); 
       progresRing.setCancelable(true); 
       new Thread(new Runnable() { 
        @Override 
        public void run() { 
         try { 
          Thread.sleep(100); 
         } catch (InterruptedException ignored) { 
          progresRing.dismiss(); 
         } 
        } 
       }).start(); 
      } 

       // Response received from the server 
       Response.Listener<String> responseListener = new Response.Listener<String>() { 
        @Override 
        public void onResponse(String response) { 

         try { 
          JSONObject jsonResponse = new JSONObject(response); 
          boolean success = jsonResponse.getBoolean("success"); 
          if (success) { 
           Intent intent = new Intent(login.this, user_area.class); 
           login.this.startActivity(intent); 
           finish(); 
          } else { 
           AlertDialog.Builder builder = new AlertDialog.Builder(login.this); 
           builder.setMessage("Login Failed") 
             .setNegativeButton("Retry", null) 
             .create() 
             .show(); 


          } 


         } catch (JSONException e) { 
          e.printStackTrace(); 
         } 
        } 
       }; 

       LoginRequest loginRequest = new LoginRequest(username, password, responseListener); 
       RequestQueue queue = Volley.newRequestQueue(login.this); 
       queue.add(loginRequest); 

      } 
     } 
    ); 
} 
@Override 
public void onStop() { 
    super.onStop(); 
    if (progresRing != null) { 
     progresRing.dismiss(); 
     progresRing = null; 
    } 
} 

}

请任何可能的解决方案....这里是我的logcat

E/WindowManager: android.view.WindowLeaked: Activity com.example.mariamhp.inicrepot.login has leaked window com.android.internal.policy.impl.PhoneWindow$DecorView{1ebb896b V.E..... R......D 0,0-729,322} that was originally added here 
       at android.view.ViewRootImpl.<init>(ViewRootImpl.java:363) 
       at android.view.WindowManagerGlobal.addView(WindowManagerGlobal.java:271) 
       at android.view.WindowManagerImpl.addView(WindowManagerImpl.java:85) 
       at android.app.Dialog.show(Dialog.java:298) 
       at android.app.ProgressDialog.show(ProgressDialog.java:116) 
       at android.app.ProgressDialog.show(ProgressDialog.java:99) 
       at com.example.mariamhp.inicrepot.login$2.onClick(login.java:64) 
       at android.view.View.performClick(View.java:4780) 
       at android.view.View$PerformClick.run(View.java:19866) 
       at android.os.Handler.handleCallback(Handler.java:739) 
       at android.os.Handler.dispatchMessage(Handler.java:95) 
       at android.os.Looper.loop(Looper.java:135) 
       at android.app.ActivityThread.main(ActivityThread.java:5254) 
       at java.lang.reflect.Method.invoke(Native Method) 
       at java.lang.reflect.Method.invoke(Method.java:372) 
       at com.android.internal.os.ZygoteInit$MethodAndArgsCaller.run(ZygoteInit.java:903) 
       at com.android.internal.os.ZygoteInit.main(ZygoteInit.java:698) 

回答

0

你应该在进行下一个活动之前关闭进度条。

所以在打电话给下一个活动之前关闭进度条。

// Here dismiss the progress bar 
Intent intent = new Intent(login.this, user_area.class); 
login.this.startActivity(intent); 
finish(); 
+0

应用冲突时,我添加progressRing.dismiss显示java.lang.NullPointerException:尝试“()空隙android.app.ProgressDialog.dismiss”调用虚拟方法上一个空对象引用 – moosa

+0

请的onCreate之前声明ProgressDialog progresRing。 –