2017-02-01 15 views
0

私はボタンが含まれている活動LoginUserActivityを持つJSONObject要求やバレーボールを使用してWebサーバへの接続を行います。ログインが成功すると、別のアクティビティーが開始されますが、そうでない場合は、ボタンを再度使用可能にする必要があります。その後、ブール値を返すとdoLogin()なメイクと私は別のものを試してみたアクセスボタン私のアプリで

public void doLogin() { 
    JSONObject obj = new JSONObject(); 
    try { 
     obj.put("type", type); 
     obj.put("email", email); 
    } catch (JSONException e) { 
     e.printStackTrace(); 
    } 

    JsonObjectRequest jsonObjectRequest = new JsonObjectRequest(Request.Method.POST, URL, obj, 
      new Response.Listener<JSONObject>() { 
       @Override 
       public void onResponse(JSONObject response) { 
        try { 
         Toast.makeText(context, response.getString("Status"), Toast.LENGTH_SHORT).show(); 
         if (response.getString("Esito").equals("true")) { 
          intent = new Intent(context, MainUtente.class); 
          context.startActivity(intent); 
         }else{ 
          //I think I've to put something here 
         } 
        } catch (JSONException e) { 
         e.printStackTrace(); 
        } 
       } 
      }, new Response.ErrorListener() { 
     @Override 
     public void onErrorResponse(VolleyError error) { 
     } 
    } 
    ); 

    jsonObjectRequest.setShouldCache(false); 
    RequestQueue requestQueue = Volley.newRequestQueue(context); 
    requestQueue.getCache().clear(); 
    requestQueue.add(jsonObjectRequest); 
} 

LoginUserActivity

public void OnLoginUtente(View view) { 
    final String mail = etMail.getText().toString(); 
    final String pw = etPassword.getText().toString(); 

    bLogin.setEnabled(false); 

    DBConnection connection = new DBConnection(mail, pw, getApplicationContext()); 
    connection.doLogin(); 
} 

doLoginは()、活動からボタンを再度有効にしますまたはelseの呼び出しアクティビティのレイアウトを膨らませようとしましたが、どちらも機能しませんでした。可能であれば、私はdoLogin()メソッドを無効にし、パラメータなしにしておきたいと思います。

+0

new Handler(Looper.getMainLooper()).post(runnable)を交換することができますか? –

+0

ボタンにアクセスする方法がわからないのでそれが私の問題です。 – Facosenpai

+0

'doLogin()'は登録やその他の処理を行うクラスで定義されているためです。さらに、私はwhellとして他のアクティビティで 'doLogin()'メソッドを呼び出します。 – Facosenpai

答えて

0

LoginUserActivity

public void OnLoginUtente(View view) { 
    final String mail = etMail.getText().toString(); 
    final String pw = etPassword.getText().toString(); 

    DBConnection connection = new DBConnection(mail, pw, getApplicationContext()); 
    connection.doLogin(this); 
} 

public void disableLoginButton() 
{ 
    bLogin.setEnabled(false); 
} 

doLogin

public void doLogin(final LoginActivity activity) { 
JSONObject obj = new JSONObject(); 
try { 
    obj.put("type", type); 
    obj.put("email", email); 
} catch (JSONException e) { 
    e.printStackTrace(); 
} 

JsonObjectRequest jsonObjectRequest = new JsonObjectRequest(Request.Method.POST, URL, obj, 
     new Response.Listener<JSONObject>() { 
      @Override 
      public void onResponse(JSONObject response) { 
       try { 
        Toast.makeText(context, response.getString("Status"), Toast.LENGTH_SHORT).show(); 
        if (response.getString("Esito").equals("true")) { 
         new Handler(Looper.getMainLooper()).post(new Runnable(){ 
          public void run() { 
           activity.disableLoginButton(); 
          } 
         ); 

         activity.disableLoginButton(); 
         intent = new Intent(context, MainUtente.class); 
         context.startActivity(intent); 
        }else{ 
         //I think I've to put something here 
        } 
       } catch (JSONException e) { 
        e.printStackTrace(); 
       } 
      } 
     }, new Response.ErrorListener() { 
    @Override 
    public void onErrorResponse(VolleyError error) { 
    } 
} 
); 

jsonObjectRequest.setShouldCache(false); 
RequestQueue requestQueue = Volley.newRequestQueue(context); 
requestQueue.getCache().clear(); 
requestQueue.add(jsonObjectRequest); 
} 

あなたはアクティビティを起動する前に、JSONのonResponseでボタンを無効にしない理由activity.runOnUiThread(runnable)

+0

を起動する前に、ボタンを無効にする方法を呼び出すことができ、言ったように私はまったく同じコードを使っていませんでしたが、私はツアーのアイデアを続けました。ありがとう – Facosenpai