登录状态成功后对HomeActivity的意图

时间:2014-12-16 06:16:35

标签: java android

这是我的LoginActivity.java

这会将登录详细信息发送到HttpAsyncTask .java

final Button button = (Button) findViewById(R.id.btnLogin);
    button.setOnClickListener(new View.OnClickListener() {

        public void onClick(View v) {

            try {

                // Get Email Edit View Value
                String email = emailET.getText().toString();
                // Get Password Edit View Value
                String password = pwdET.getText().toString();
                // Instantiate Http Request Param Object
                //                  RequestParams params = new RequestParams();
                // When Email Edit View and Password Edit View have values
                // other than Null
                if (Utility.isNotNull(email) && Utility.isNotNull(password)) {
                    // When Email entered is Valid
                    if (Utility.validate(email)) {

                        //call the async task

                        JSONObject js = new HttpAsyncTask(getApplicationContext()).execute(email,password).get();

                        Toast.makeText(getApplicationContext(), "Asynctask started", Toast.LENGTH_SHORT).show();

                    }
                    // When Email is invalid
                    else {
                        Toast.makeText(getApplicationContext(),
                                "Please enter valid email",
                                Toast.LENGTH_LONG).show();
                    }
                }
                // When any of the Edit View control left blank
                else {
                    Toast.makeText(
                            getApplicationContext(),
                            "Please fill the form, don't leave any field blank",
                            Toast.LENGTH_LONG).show();
                }
            } catch (Exception ex) {

            }

        }
    });
  }
}

HttpAsyncTask.java

public class HttpAsyncTask extends AsyncTask<String, Integer, JSONObject> {

private static InputStream stream = null;
private static String API;
private JSONObject responseJson = null;
private Context contxt;
private Activity activity;

public HttpAsyncTask(Context context) {

    // API = apiURL;
    this.contxt = context;
}

// async task to accept string array from context array
@Override
protected JSONObject doInBackground(String... params) {

    String path = null;
    String response = null;
    HashMap<String, String> request = null;
    JSONObject requestJson = null;
    DefaultHttpClient httpClient = null;
    HttpPost httpPost = null;
    StringEntity requestString = null;
    ResponseHandler<String> responseHandler = null;

    // get the username and password
    Log.i("Email", params[0]);
    Log.i("Password", params[1]);

    try {

        path = "http://192.168.XXXXXXX";
        new URL(path);
    } catch (MalformedURLException e) {

        e.printStackTrace();
    }

    try {

        // set the API request
        request = new HashMap<String, String>();
        request.put(new String("Email"), params[0]);
        request.put(new String("Password"), params[1]);
        request.entrySet().iterator();


        requestJson = new JSONObject(request);
        httpClient = new DefaultHttpClient();
        httpPost = new HttpPost(path);
        requestString = new StringEntity(requestJson.toString());


        httpPost.setEntity(requestString);
        httpPost.setHeader("Content-type", "application/json");

        // Handles the response
        responseHandler = new BasicResponseHandler();
        response = httpClient.execute(httpPost, responseHandler);

        responseJson = new JSONObject(response);

    } catch (Exception e) {
        Log.e("Buffer Error", "Error converting result " + e.toString());
    }
    try {
        responseJson = new JSONObject(response);
    } catch (JSONException e) {
        Log.e("JSON Parser", "Error parsing data " + e.toString());
    }

    return responseJson;   
}

@Override
protected void onPostExecute(JSONObject result) {
    // TODO Auto-generated method stub
    super.onPostExecute(result);
    Log.d("MyAsyncTask", "Received result: " + result); //here i get Received result: {"status":"400"}

}

我的问题是我想知道如何在登录成功时将其指向ActivityHome,如果登录错误则应显示错误消息。

我在onPostExecute方法

中尝试了这个
activity.startActivity(new Intent(activity, ActivityHome.class));

但它没有用,应用程序崩溃了。

2 个答案:

答案 0 :(得分:0)

首先,您必须将您的回复存储在JSONObject方法的onPostExecute中。

protected void onPostExecute(JSONObject result) {
    // TODO Auto-generated method stub
    super.onPostExecute(result);
    if(responseJson!=null){
        try{
            JSONObject jObjstatus=new JSONObject(responseJson);
            String status=jObjstatus.getString("status");
            if(status.equals("success"){
                startActivity(new Intent(MainActivity.this, SecondActivity.class);
            }
        }catch(){
        }
    }
}

答案 1 :(得分:0)

public class HttpAsyncTask扩展了AsyncTask {

private static InputStream stream = null;
private static String API;
private JSONObject responseJson = null;
private Context contxt;
private Activity activity;

public HttpAsyncTask(Context context) {

    // API = apiURL;
    this.contxt = context;
}

// async task to accept string array from context array
@Override
protected JSONObject doInBackground(String... params) {

    String path = null;
    String response = null;
    HashMap<String, String> request = null;
    JSONObject requestJson = null;
    DefaultHttpClient httpClient = null;
    HttpPost httpPost = null;
    StringEntity requestString = null;
    ResponseHandler<String> responseHandler = null;

    // get the username and password
    Log.i("Email", params[0]);
    Log.i("Password", params[1]);

    try {

        path = "http://192.168.XXXXXXX";
        new URL(path);
    } catch (MalformedURLException e) {

        e.printStackTrace();
    }

    try {

        // set the API request
        request = new HashMap<String, String>();
        request.put(new String("Email"), params[0]);
        request.put(new String("Password"), params[1]);
        request.entrySet().iterator();


        requestJson = new JSONObject(request);
        httpClient = new DefaultHttpClient();
        httpPost = new HttpPost(path);
        requestString = new StringEntity(requestJson.toString());


        httpPost.setEntity(requestString);
        httpPost.setHeader("Content-type", "application/json");

        // Handles the response
        responseHandler = new BasicResponseHandler();
        response = httpClient.execute(httpPost, responseHandler);

        responseJson = new JSONObject(response);

    } catch (Exception e) {
        Log.e("Buffer Error", "Error converting result " + e.toString());
    }


    return responseJson;
}

@Override
protected void onPostExecute(JSONObject result) {
    // TODO Auto-generated method stub
    super.onPostExecute(result);
    if (result != null) {
        String status = result.optString("status");
        if (status.equalsIgnoreCas("200"))
        {
            ((Activity) context).startActivity(new Intent(context, HomeActivity.class));

        }else
        {
            //error message
        }
    } else {
        //error message
    }
}