Java 使用AsyncTask更新UI

Java 使用AsyncTask更新UI,java,android,android-asynctask,Java,Android,Android Asynctask,我试图在progressbar显示后实现登录,但它显示了一个错误。下面是我正在使用的代码 class PostService extends AsyncTask<String, Void, String> { @Override protected String doInBackground(String... params) { String s = UserFunctions.response; Log.d

我试图在progressbar显示后实现登录,但它显示了一个错误。下面是我正在使用的代码

class PostService extends AsyncTask<String, Void, String> {

        @Override
        protected String doInBackground(String... params) {
            String s = UserFunctions.response;
        Log.d(Details.TAG, "checking i response...");
            UserFunctions.basicLogin(email, password);
            Log.d(Details.TAG,
                    s + " " + UserFunctions.basicLogin(email, password));

            return s;
        }

        Intent i;

        @Override
        protected void onPostExecute(String r) {
            // TODO Auto-generated method stub
            super.onPostExecute(UserFunctions.response);
            Log.d(Details.TAG, "Password Point");
            if(UserFunctions.basicLogin(email, password)){
                i = new Intent("com.example.eve_haps.DASHBOARDACTIVITY");
                startActivity(i);
            }else {
                Toast.makeText(MainActivity.this,
                        "Login UnSuccesful. Check email and/or password",
                        Toast.LENGTH_SHORT).show();
            }

        }

    }
下面是实现登录的代码

public static boolean basicLogin(String email, String password) {

        String msg = "Login successful";
        boolean status = false;
        String url;
        String links[] = {
                "..." + "?user=",
                "..." + "?actn=login"
                        + "&user=" };
        auth_link = links[0]+email + "&password=" + password;
        response = Connect.doHTTPGet(auth_link);
//      result = getHttpResponse(url);
        Log.d(Details.TAG, " " + msg.length() + " " + UserFunctions.response.substring(0, 17) + " "+ UserFunctions.response.substring(0, 17).length() );
        if (UserFunctions.response.substring(0, 17).trim().equals(msg)) {
            Log.d(Details.TAG, " " + msg.length() + " " + UserFunctions.response.substring(0, 17));
            status = true;
        } 
        Log.d(Details.TAG, " " + "Connection Test"
                + UserFunctions.response);

        return status;

请问是什么错误。如果您试图对长度为零的字符串执行substring(),我将不胜感激:UserFunctions.response.substring(0,17)。代码假定UserFunctions.response被填充为至少17个字符长的内容,但它不是。为什么要使用
basicLogin
方法两次
UserFunctions.response.substring(0,17)
:如果响应少于17个字符怎么办?
public static boolean basicLogin(String email, String password) {

        String msg = "Login successful";
        boolean status = false;
        String url;
        String links[] = {
                "..." + "?user=",
                "..." + "?actn=login"
                        + "&user=" };
        auth_link = links[0]+email + "&password=" + password;
        response = Connect.doHTTPGet(auth_link);
//      result = getHttpResponse(url);
        Log.d(Details.TAG, " " + msg.length() + " " + UserFunctions.response.substring(0, 17) + " "+ UserFunctions.response.substring(0, 17).length() );
        if (UserFunctions.response.substring(0, 17).trim().equals(msg)) {
            Log.d(Details.TAG, " " + msg.length() + " " + UserFunctions.response.substring(0, 17));
            status = true;
        } 
        Log.d(Details.TAG, " " + "Connection Test"
                + UserFunctions.response);

        return status;