LoginActivity.AttemptLogin不是抽象的,并且不会覆盖AsyncTask中的抽象方法doInBackground(Object ...)

0 java android json android-asynctask

我试图在我的本地数据库中发送和验证我的登录凭据,因此我使用了json,以便将条目转换为json对象并使用json解析器类对其进行解析.

这是我的代码:

import android.content.Intent;
import android.content.SharedPreferences;
import android.graphics.Color;
import android.os.AsyncTask;
import android.support.v7.app.AppCompatActivity;
import android.os.Bundle;
import android.util.Log;
import android.view.View;
import android.widget.Button;
import android.widget.EditText;
import android.widget.TextView;
import android.widget.Toast;

import org.apache.http.NameValuePair;
import org.apache.http.message.BasicNameValuePair;
import org.json.JSONException;
import org.json.JSONObject;
import java.util.ArrayList;

public class LoginActivity extends AppCompatActivity {
    EditText editEmail, editPassword, editUserName, editName, editBikeName, editBikeNo;
    Button btnSignIn,btnRegister;
    TextView regText, bikeText, pedText;

    String URL= "http://192.168.225.22/android/index.php";

    JSONParser jsonParser=new JSONParser();

    int i=0,j=0;

    @Override
    protected void onCreate(Bundle savedInstanceState) {
        super.onCreate(savedInstanceState);
        setContentView(R.layout.activity_login);

        editEmail=(EditText)findViewById(R.id.editEmail);
        editUserName=(EditText)findViewById(R.id.editUserName);
        editPassword=(EditText)findViewById(R.id.editPassword);
        editName=(EditText)findViewById(R.id.editName);
        editBikeName=(EditText)findViewById(R.id.editBikeName);
        editBikeNo=(EditText)findViewById(R.id.editBikeNo);
        regText=(TextView)findViewById(R.id.regText);
        btnSignIn=(Button)findViewById(R.id.btnSignIn);
        btnRegister=(Button)findViewById(R.id.btnRegister);
        btnSignIn.setOnClickListener(new View.OnClickListener() {
            @Override
            public void onClick(View view) {
                AttemptLogin attemptLogin= new AttemptLogin();
                attemptLogin.execute(editName.getText().toString(),editPassword.getText().toString(),"");
            }
        });

        regText.setOnClickListener(new View.OnClickListener() {
            @Override
            public void onClick(View view) {

                if(i==0)
                {
                    i=1;
                    editName.setVisibility(View.VISIBLE);
                    editEmail.setVisibility(View.VISIBLE);
                    btnRegister.setVisibility(View.VISIBLE);
                    bikeText.setOnClickListener(new View.OnClickListener(){
                        public void onClick(View view){
                            if(j==0)
                            {
                                j=1;
                                editBikeName.setVisibility(View.VISIBLE);
                                editBikeNo.setVisibility(View.VISIBLE);
                            }
                        }
                    });

                    btnSignIn.setVisibility(View.GONE);
                    regText.setVisibility(View.GONE);
                    pedText.setOnClickListener(new View.OnClickListener(){
                        public void onClick(View view){
                            if(j==1)
                            {
                                j=0;
                                editBikeName.setVisibility(View.GONE);
                                editBikeNo.setVisibility(View.GONE);
                            }
                        }
                    });
                }
                else{

                    editEmail.setVisibility(View.GONE);
                    btnSignIn.setVisibility(View.VISIBLE);
                    btnRegister.setVisibility(View.GONE);
                    i=0;

                    AttemptLogin attemptLogin= new AttemptLogin();
                    attemptLogin.execute(editName.getText().toString(),editPassword.getText().toString(),editEmail.getText().toString());

                }

            }
        });


    }

    public class AttemptLogin extends AsyncTask
    {

        @Override
        protected JSONObject doInBackground(String[] param)
        {
            String email = param[2];
            String password = param[1];
            String uname= param[0];

            ArrayList params = new ArrayList();
            params.add(new BasicNameValuePair("username", uname));
            params.add(new BasicNameValuePair("password", password));
            if(email.length()>0)
                params.add(new BasicNameValuePair("email",email));

            JSONObject json = jsonParser.makeHttpRequest(URL, "POST", params);


            return json;

        }

        @Override

        protected void onPreExecute() {

            super.onPreExecute();

        }

        protected void onPostExecute(JSONObject result) {

            // dismiss the dialog once product deleted
            //Toast.makeText(getApplicationContext(),result,Toast.LENGTH_LONG).show();

            try {
                if (result != null) {
                    Toast.makeText(getApplicationContext(),result.getString("message"),Toast.LENGTH_LONG).show();
                } else {
                    Toast.makeText(getApplicationContext(), "Unable to retrieve any data from server", Toast.LENGTH_LONG).show();
                }
            } catch (JSONException e) {
                e.printStackTrace();
            }


        }

    }
}
Run Code Online (Sandbox Code Playgroud)

现在我收到一个错误,比如

    Error:(250, 12) error: LoginActivity.AttemptLogin is not abstract and does not override abstract method doInBackground(Object...) in AsyncTask
Run Code Online (Sandbox Code Playgroud)

Com*_*are 6

更换:

extends AsyncTask
Run Code Online (Sandbox Code Playgroud)

有:

extends AsyncTask<String, Void, JSONObject>
Run Code Online (Sandbox Code Playgroud)

请注意,AsyncTask任何有关Android应用开发的现代书籍或课程都会涉及到使用.

这是AsyncTask流程图: 在此输入图像描述