2016-10-07 1 views
0

Здесь я создаю страницу для входа. Когда я написал имя пользователя и когда перешел на пароль edittext, он должен проверить имя пользователя в json api, будь то в первый раз логин или повторный вход в систему ... при повторном входе в систему setvisible textview забудьте пропустить setVisibView.visible, и если это первый раз, он покажет getpassword textview. Вот мой код:Войти с помощью okhttp json

try { 
           JSONObject jsonObject = new JSONObject(res); 
           JSONArray result = jsonObject.getJSONArray(ConstantsValues.result); 
           JSONArray result1 = jsonObject.getJSONArray(ConstantsValues.result1); 

           for (int i = 0; i < result.length(); i++) { 
            JSONObject obj_result = result.getJSONObject(i); 
            String Success = obj_result.getString("SUCCESS"); 
            if (Success.equals("1")) { 
             for (int j = 0; j < result1.length(); j++) { 
              JSONObject obj_result1 = result1.getJSONObject(j); 
              String Message = obj_result1.getString("message"); 
              if (Message.equals("Forget Password.")) { 
               forgetpass.setVisibility(View.VISIBLE); 
              } else { 
               getpass.setVisibility(View.VISIBLE); 
              } 
             } 

            } else { 
             showAlertDialog("Invalid", "Invalid password or Email"); 
            } 


           } 
           runOnUiThread(new Runnable() { 
            @Override 
            public void run() { 
             // you can access all the UI componenet 

            } 
           }); 

здесь ошибка:

E/JSONDemo: onResponse 
android.view.ViewRootImpl$CalledFromWrongThreadException: Only the original thread that created a view hierarchy can touch its views. 
    at android.view.ViewRootImpl.checkThread(ViewRootImpl.java:7266) 
    at android.view.ViewRootImpl.recomputeViewAttributes(ViewRootImpl.java:3490) 
    at android.view.ViewGroup.recomputeViewAttributes(ViewGroup.java:1357) 
    at android.view.ViewGroup.recomputeViewAttributes(ViewGroup.java:1357) 
    at android.view.ViewGroup.recomputeViewAttributes(ViewGroup.java:1357) 
    at android.view.ViewGroup.recomputeViewAttributes(ViewGroup.java:1357) 
    at android.view.ViewGroup.recomputeViewAttributes(ViewGroup.java:1357) 
    at android.view.ViewGroup.recomputeViewAttributes(ViewGroup.java:1357) 
    at android.view.ViewGroup.recomputeViewAttributes(ViewGroup.java:1357) 
    at android.view.ViewGroup.recomputeViewAttributes(ViewGroup.java:1357) 
    at android.view.ViewGroup.recomputeViewAttributes(ViewGroup.java:1357) 
    at android.view.ViewGroup.recomputeViewAttributes(ViewGroup.java:1357) 
    at android.view.ViewGroup.recomputeViewAttributes(ViewGroup.java:1357) 
    at android.view.View.needGlobalAttributesUpdate(View.java:9904) 
    at android.view.View.setFlags(View.java:10749) 
    at android.view.View.setVisibility(View.java:7511) 
    at com.example.abhishek.focus_business_solution.SignIn$3$1.onResponse(SignIn.java:248) 
    at okhttp3.RealCall$AsyncCall.execute(RealCall.java:133) 
    at okhttp3.internal.NamedRunnable.run(NamedRunnable.java:32) 
    at java.util.concurrent.ThreadPoolExecutor.runWorker(ThreadPoolExecutor.java:1113) 
    at java.util.concurrent.ThreadPoolExecutor$Worker.run(ThreadPoolExecutor.java:588) 
    at java.lang.Thread.run(Thread.java:818) 

ответ

1

Предполагая, что весь ваш код в фоновом потоке, все просматривать видимость код должен быть внутри runOnUiThread():

например:

 if (Message.equals("Forget Password.")) { 
       runOnUiThread(new Runnable() { 
        @Override 
        public void run() { 
         forgetpass.setVisibility(View.VISIBLE); 
        } 
       }); 
     } 
+0

Аналогичным образом используется способ доступа к любым элементам пользовательского интерфейса – Kushan

+0

Спасибо, брат, я искал это только ....... Я не понимал, что делать хорошо, и спасибо. – Abhi