Android 类型<&燃气轮机;必须实现继承的抽象方法AsyncTask.doInBackground(对象…)

Android 类型<&燃气轮机;必须实现继承的抽象方法AsyncTask.doInBackground(对象…),android,mysql,inheritance,android-asynctask,Android,Mysql,Inheritance,Android Asynctask,我目前正在开发一个连接到MySQL数据库的Android应用程序。现在我的AsyncTask有问题。它给了我一些错误: 类型MainActivity.NetCheck必须实现继承的抽象方法AsyncTask.doInBackground(对象…) 类型MainActivity.ProcessLogin必须实现继承的抽象方法AsyncTask.doInBackground(对象…) 代码如下: /** * Async Task to check whether internet connecti

我目前正在开发一个连接到MySQL数据库的Android应用程序。现在我的
AsyncTask
有问题。它给了我一些错误:

类型
MainActivity.NetCheck
必须实现继承的抽象方法
AsyncTask.doInBackground(对象…)

类型
MainActivity.ProcessLogin
必须实现继承的抽象方法
AsyncTask.doInBackground(对象…)

代码如下:

/**
 * Async Task to check whether internet connection is working.
 **/
    private class NetCheck extends AsyncTask
    {
        private ProgressDialog nDialog;
        @Override
        protected void onPreExecute(){
            super.onPreExecute();
            nDialog = new ProgressDialog(MainActivity.this);
            nDialog.setTitle("Checking Network");
            nDialog.setMessage("Loading..");
            nDialog.setIndeterminate(false);
            nDialog.setCancelable(true);
            nDialog.show();
        }
        
        @Override
        protected Boolean doInBackground(String... args){
/**
 * Gets current device state and checks for working internet connection by trying Google.
**/
            ConnectivityManager cm = (ConnectivityManager) getSystemService(Context.CONNECTIVITY_SERVICE);
            NetworkInfo netInfo = cm.getActiveNetworkInfo();
            if (netInfo != null && netInfo.isConnected()) {
                try {
                    URL url = new URL("http://www.google.com");
                    HttpURLConnection urlc = (HttpURLConnection) url.openConnection();
                    urlc.setConnectTimeout(3000);
                    urlc.connect();
                    if (urlc.getResponseCode() == 200) {
                        return true;
                    }
                } catch (MalformedURLException e1) {
                    // TODO Auto-generated catch block
                    e1.printStackTrace();
                } catch (IOException e) {
                    // TODO Auto-generated catch block
                    e.printStackTrace();
                }
            }
            return false;
        }
        @Override   
        protected void onPostExecute(Boolean th){
            if(th == true){
                nDialog.dismiss();
                new ProcessLogin().execute();
            }
            else{
                nDialog.dismiss();
                loginErrorMsg.setText("Error in Network Connection");
            }
        }
    }

/**
     * Async Task to get and send data to My Sql database through JSON response.
     **/
    private class ProcessLogin extends AsyncTask {
        private ProgressDialog pDialog;
        String UserID,Password;
        @Override
        protected void onPreExecute() {
            super.onPreExecute();
            loginUName = (EditText) findViewById(R.id.loginUsername);
            loginPword = (EditText) findViewById(R.id.loginPassword);
            UserID = loginUName.getText().toString();
            Password = loginPword.getText().toString();
            pDialog = new ProgressDialog(MainActivity.this);
            pDialog.setTitle("Contacting Servers");
            pDialog.setMessage("Logging in ...");
            pDialog.setIndeterminate(false);
            pDialog.setCancelable(true);
            pDialog.show();
        }
        @Override
        protected JSONObject doInBackground(String... args) {
            UserFunctions userFunction = new UserFunctions();
            JSONObject json = userFunction.loginUser(UserID, Password);
            return json;
        }
        @Override
        protected void onPostExecute(JSONObject json) {
            try {
               if (json.getString(KEY_SUCCESS) != null) {
                    String res = json.getString(KEY_SUCCESS);
                    if(Integer.parseInt(res) == 1){
                        pDialog.setMessage("Loading User Space");
                        pDialog.setTitle("Getting Data");
                        DatabaseHandler db = new DatabaseHandler(getApplicationContext());
                        JSONObject json_user = json.getJSONObject("user");
                        /**
                         * Clear all previous data in SQlite database.
                         **/
                        UserFunctions logout = new UserFunctions();
                        logout.logoutUser(getApplicationContext());
                        db.addUser(json_user.getString(KEY_FIRSTNAME),json_user.getString(KEY_LASTNAME),json_user.getString(KEY_EMAIL),json_user.getString(KEY_USERNAME),json_user.getString(KEY_UID),json_user.getString(KEY_CREATED_AT));
                       /**
                        *If JSON array details are stored in SQlite it launches the User Panel.
                        **/
                        Intent upanel = new Intent(getApplicationContext(), Index.class);
                        upanel.addFlags(Intent.FLAG_ACTIVITY_CLEAR_TOP);
                        pDialog.dismiss();
                        startActivity(upanel);
                        /**
                         * Close Login Screen
                         **/
                        finish();
                    }else{
                        pDialog.dismiss();
                        loginErrorMsg.setText("Incorrect username/password");
                    }
                }
            } catch (JSONException e) {
                e.printStackTrace();
            }
       }
    }
    public void NetAsync(View view){
        new NetCheck().execute();
    }   

AsyncTask需要定义3种通用类型,如下所示:

AsyncTask<Params, Progress, Result>
AsyncTask<Params, Progress, Result>
异步任务
你的情况应该是这样的

AsyncTask<String, Void, Boolean>
异步任务
所以就这样延伸:

private class NetCheck extends AsyncTask<String, Void, Boolean>
私有类NetCheck扩展了异步任务

AsyncTask需要定义3种通用类型,如下所示:

AsyncTask<Params, Progress, Result>
AsyncTask<Params, Progress, Result>
异步任务
你的情况应该是这样的

AsyncTask<String, Void, Boolean>
异步任务
所以就这样延伸:

private class NetCheck extends AsyncTask<String, Void, Boolean>
私有类NetCheck扩展了异步任务

您的
异步任务
缺少泛型类型参数,因此假定
对象
,但您的实现使用更具体的类作为类型

所以,改变这个

private class NetCheck extends AsyncTask

私有类NetCheck扩展了异步任务
第一个泛型类型param是
doInBackground
的参数类型。第二个是进度更新的参数类型,第三个是结果类型


您还需要对
ProcessLogin
类进行类似的更改。

您的
AsyncTask
缺少泛型类型参数,因此假定
对象
,但您的实现使用更具体的类作为类型

所以,改变这个

private class NetCheck extends AsyncTask

私有类NetCheck扩展了异步任务
第一个泛型类型param是
doInBackground
的参数类型。第二个是进度更新的参数类型,第三个是结果类型


您还需要对
ProcessLogin
类进行类似的更改。

更改您从中下载的类声明

private class NetCheck extends AsyncTask{
}

private class NetCheck extends AsyncTask<String,Void,String>{
}
private class ProcessLogin extends AsyncTask<String,Void,String>{
}

private class NetCheck extends AsyncTask<String,Void,String>{
}
private class ProcessLogin extends AsyncTask<String,Void,String>{
}

更改从下载的you class声明

private class NetCheck extends AsyncTask{
}

private class NetCheck extends AsyncTask<String,Void,String>{
}
private class ProcessLogin extends AsyncTask<String,Void,String>{
}

private class NetCheck extends AsyncTask<String,Void,String>{
}
private class ProcessLogin extends AsyncTask<String,Void,String>{
}

不要使用原始类型,AsyncTask在我记忆中是类型化的。不要使用原始类型,AsyncTask在我记忆中是类型化的。但是现在它给了我一个错误:“返回类型与@Override protected JSONObject doInBackground(String…args)上的AsyncTask.doInBackground(String[])不兼容”{UserFunctions userFunction=new UserFunctions();JSONObject json=userFunction.logiuser(UserID,Password);return json;}谢谢,但现在它给了我一个错误:“返回类型与@Override protected JSONObject doInBackground上的AsyncTask.doInBackground(字符串[])不兼容。”(String…args){UserFunctions userFunction=new UserFunctions();JSONObject json=userFunction.loginUser(用户ID,密码);返回json;}