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

标签 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();
            }


        }

    }
}

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

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

最佳答案

替换:

extends AsyncTask

与:

extends AsyncTask<String, Void, JSONObject>

请注意,任何有关 Android 应用开发的现代书籍或类(class)都介绍了 AsyncTask 的使用。

这是 AsyncTask 流程图: enter image description here

关于java - LoginActivity.AttemptLogin 不是抽象的,不会覆盖 AsyncTask 中的抽象方法 doInBackground(Object...),我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/42032444/

相关文章:

android - JNI 从 C++ 调用 Java 方法

android - Firebase 管理 SDK Android

java - 获取要在服务任务中使用的嵌入表单变量的值

java - IntelliJ 无法识别 Lombok 方法但编译成功

Eclipse 中的 Android Facebook SDK 4

c# - json转c#反序列化

javascript - 未获得对 PHP 的 AJAX 调用的响应(使用 JSON 数据)

json - 在 Erlang [Mochijson] 中正确解析单元素 JSON 列表?

java - 如何检查 JSP 是否连接到数据库?

java - Lucene 查询解析行为 - 使用 AND 连接查询部分