我正在尝试在本地数据库中发送并验证我的登录凭据,因此我使用了 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
的使用。
关于java - LoginActivity.AttemptLogin 不是抽象的,不会覆盖 AsyncTask 中的抽象方法 doInBackground(Object...),我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/42032444/