グローバル変数の更新に関する問題がsetメソッドによって発生しています。短いの状況は次のとおりです。volley androidでの同期要求
その後、私の設定setメソッド内で、(ログイン)現在のユーザーセッションに関する情報を格納する(SessionHandlerは、このクラスの名前です)クラスを使用しますユーザーがログインしている場合はブール値をtrueに、それ以外の場合はfalseにします。変数はFALSEに初期化されます。
ライブラリを使用してFacebook、Googleプラス、パーソナライズドログインでログインロジックを実装します。このクラスには、ログインが成功したかどうかに基づいてブール値を返すメソッド(customSignin)があります。
@Override public boolean customSignin(SmartUser smartUser) { params = new ArrayList<>(); params.add(smartUser.getUsername()); params.add(smartUser.getPassword()); StringRequest strReq = new LoginStringRequest().getStringRequest(params); AppController.getInstance().addToRequestQueue(strReq); if(SessionHandler.logged){ return true; } else { return false; } }
そしてTRUE =ユーザログイン、FALSE =ユーザにログインしていない。ユーザーがデータベースに存在する場合は明らかに、値がtrueに設定されなければなりません。 投稿されたコードからわかるように、問題があります: このメソッド内では、入力された値(ユーザー名、パスワード)が正しいことをチェックする別のクラスを呼び出し、データベース、これは、ライブラリVolleyを使用するには、問題は、VolleyのonResponseメソッド内の非同期タスクである場合、データが真のセプタムであることをTRUEに設定メソッドを介してブール変数LOGGEDの値です。 ログイン情報が正しい場合でも常にFALSEに設定されているブール変数の値を確認するには、後で最初のメソッド(customSignin)が必要です。 (その後、IFから始まるBooleanをチェックします)。 これがボレークラスのコードです:今、誰もが、私はこの問題を解決することができますどのように私に言うことができるならば、あなたは状況を解決するために、同期タスクを使用して避けることができる不思議
?特に、ユーザーがデータベースに存在し、その後customSigninメソッドで実行を続けると、バレーボールを介してtrueに設定されます。
ご迷惑をおかけして申し訳ありませんが、私を助ける方法を知っている人のおかげで、残念ながら翻訳者を使用します。
私はあなたの考えを使用して値を返すために同期要求を使用しました。しかし、私は、ボレーとFutureRequestを使用し、結果としてTimeoutExceptionを持っていた。 – Applefriend
これは、同期要求[リンク](http://s13.postimg.org/4n6573xw7/Schermata_2016_09_22_alle_21_24_00.png)を実装する方法です。 – Applefriend