2016-03-26 15 views
0

Dies ist mein erstes Mal mit APIS, das Ergebnis JSON-Objekt zurückzugeben. Ich denke, ich habe den Async-Taskcode richtig, aber ich weiß einfach nicht, wie ich ihn ausführen soll. Das ist mein Klassencode. Für mein Layout habe ich nur eine Schaltfläche mit einer onClick() Methode gg, eine Fortschrittsanzeige und eine Textansicht.
Dies ist der Asynchron-Aufgabe:Asynctask unbekannter Typ ausführen

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


    } 

So in der public void gg(View v) ich die .execute Methode aufrufen, aber es gibt mir einen Fehler

Unbekannter Typ

ausführen Muss ich zu fügen Sie der execute-Methode einige params hinzu?
Wenn ja was?

Danke.

Antwort

1

Versuchen

new RetrieveFeedTask().execute(); 
+0

Dank ich werde es versuchen und u –

+0

Dank wissen, es hat funktioniert. BTW fragt nur. Liegt ein Fehler in der asynchronen Task vor? Weil die Antwort, die ich bekomme, null ist. Irgendeine Idee. Danke nochmal –

+0

Ich habe es verstanden. Ich musste in meinem Manifest eine Internet-Berechtigung hinzufügen. Das hat es funktioniert !!! Danke nochmal für deine Antwort! –

Verwandte Themen