2017-02-03 1 views
0

Ich versuche zu senden und meine Anmeldedaten in meiner lokalen Datenbank zu validieren, daher habe ich json, um die Einträge zu machen in JSON-Objekt und analysieren Sie es mit JSON Parser-Klasse.LoginActivity.AttemptLogin ist nicht abstrakt und überschreibt keine abstrakte Methode doInBackground (Object ...) in AsyncTask

Hier ist mein Code:

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


     } 

    } 
} 

Jetzt bekomme ich einen Fehler, wie

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

Sie haben Ihre AsyncTask erklärt . – Submersed

Antwort

3

ersetzen:

extends AsyncTask 

mit:

extends AsyncTask<String, Void, JSONObject> 

Beachten Sie, dass die Verwendung von AsyncTask in jedem modernen Buch oder Kurs zur Entwicklung von Android-Apps abgedeckt ist.

Hier ist das AsyncTask Flussdiagramm: enter image description here

+0

vielen Dank, ich habe nicht bemerkt, dass .. du bist ein Genie! –

Verwandte Themen