2016-03-26 1 views
0

C'est la première fois que je demande à APIS de retourner l'objet JSON résultat. Je pense que j'ai le bon code de tâche asynchrone mais je ne sais pas comment l'exécuter. C'est mon code de classe. Pour ma mise en page tout ce que j'ai est un bouton avec une méthode onClick() gg, une barre de progression et une vue de texte.
Telle est la tâche async:Asynctask type inconnu execute

public class MainActivity extends Activity 
{ 
    ProgressBar progressBar; 
    TextView responseView; 
    EditText emailText; 
    String URL; 
@Override 
protected void onCreate(Bundle savedInstanceState) 
{ 
    super.onCreate(savedInstanceState); 
    setContentView(R.layout.main); 
      progressBar = (ProgressBar) findViewById(R.id.progressBar); 
      responseView = (TextView) findViewById(R.id.responseView); 
      emailText = (EditText) findViewById(R.id.emailText); 
      URL = "https://kgsearch.googleapis.com/v1/entities:search?query=taylor+swift&key=APIKEY&limit=1&indent=True"; 
} 
    public void gg(View v) 
    { 
      new RetrieveFeedTask.execute(); 
    } 


    private class RetrieveFeedTask extends AsyncTask<Void, Void, String> { 

      private Exception exception; 

      protected void onPreExecute() { 
        progressBar.setVisibility(View.VISIBLE); 
        responseView.setText(""); 
        Toast.makeText(MainActivity.this, "pre execute", Toast.LENGTH_LONG).show(); 
      } 

      protected String doInBackground(Void... urls) { 
        String email = emailText.getText().toString(); 
        // Do some validation here 


        try { 
          URL url = new URL(URL); 
          HttpURLConnection urlConnection = (HttpURLConnection) url.openConnection(); 
          try { 
            BufferedReader bufferedReader = new BufferedReader(new InputStreamReader(urlConnection.getInputStream())); 
            StringBuilder stringBuilder = new StringBuilder(); 
            String line; 
            while ((line = bufferedReader.readLine()) != null) { 
              stringBuilder.append(line).append("\n"); 
            } 
            bufferedReader.close(); 
            return stringBuilder.toString(); 
          } 
          finally{ 
            urlConnection.disconnect(); 
          } 
        } 
        catch(Exception e) { 
          Log.e("ERROR", e.getMessage(), e); 
          return null; 
        } 
      } 

      protected void onPostExecute(String response) { 
        if(response == null) { 
          response = "THERE WAS AN ERROR"; 
          Toast.makeText(MainActivity.this, "post execute", Toast.LENGTH_LONG).show(); 
        } 
        progressBar.setVisibility(View.GONE); 
        Log.i("INFO", response); 
        responseView.setText(response); 
      } 
    } 


    } 

Ainsi, dans le public void gg(View v) j'appelle la méthode .execute mais il me donne une erreur

Type inconnu exécuter

Dois-je ajouter des paramètres à la méthode d'exécution?
Si oui quoi?

Merci.

Répondre

1

Essayez

new RetrieveFeedTask().execute(); 
+0

Merci, je vais essayer et laisser u savoir –

+0

Merci cela a fonctionné. BTW demande juste. Y a-t-il une erreur dans la tâche asynchrone? Parce que la réponse que j'obtiens est nulle. Une idée. Merci encore –

+0

Je l'ai eu. J'ai dû ajouter une permission Uses Internet dans mon manifeste. Cela a fait fonctionner !!! Merci encore pour votre réponse! –