2016-03-26 3 views
0

Это мой первый раз, когда APIS возвращает результат объекта JSON. Я думаю, что у меня есть асинхронный код задачи, но я просто не знаю, как его выполнить. Это мой код класса. Для моего макета у меня есть одна кнопка с методом onClick() gg, индикатор выполнения и один текстовый вид.
Это асинхронная задача:Asynctask неизвестный тип 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); 
      } 
    } 


    } 

Так в public void gg(View v) я называю .execute метод, но он дает мне ошибку

Неизвестный тип выполнения

ли я добавить некоторые параметры в метод execute?
Если да, то какой?

Спасибо.

ответ

1

Попробуйте

new RetrieveFeedTask().execute(); 
+0

спасибо Я попытаюсь это и пусть знают –

+0

Спасибо, что работали. Кстати, просто спрашиваю. Произошла ошибка в асинхронной задаче. Потому что ответ, который я получаю, равен нулю. Есть идеи. Еще раз спасибо –

+0

Я понял. Мне пришлось добавить разрешение на использование Интернета в моем манифесте. Это заставило его работать !!! Еще раз спасибо за ваш ответ! –

Смежные вопросы