来自外部课程

时间:2017-02-01 20:20:58

标签: android

在我的应用程序中,我有一个活动LoginUserActivity,其中包含一个按钮,使用JSONObject请求和Volley执行与Web服务器的连接。如果登录成功,将启动另一个活动,但如果不是,我需要重新启用该按钮。

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()

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);
}

我尝试了不同的东西,例如make doLogin()返回一个布尔值,然后从活动中重新启用该按钮,或尝试在else中膨胀调用活动的布局,但是这些都不起作用。如果可能的话,我想保持doLogin()方法无效且没有参数。

1 个答案:

答案 0 :(得分: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);
}

您可以将new Handler(Looper.getMainLooper()).post(runnable)替换为activity.runOnUiThread(runnable)