Как правильно начать работу с PostExecute в Android?

У меня есть AsyncTask, который заполняет собственный список с помощью проанализированных данных из Интернета.

В PostExecute я заполняю этот список и готов его перенести в новое действие.

Я делаю это так:

@Override protected void onPostExecute(List result) { super.onPostExecute(result); MainActivity.progressDialog.dismiss(); context.startActivity(new Intent(context, ResultsQueryActivity.class)); } 

где контекст

  private Context context; 

В LogCat после выполнения этого кода я получаю исключение Java.lang.NullPointerException. Возможно ли и правильно ли начать работу, как я это делаю?

UPD Я добавил

  private Context mContext; public YoutubeAndYahooParser(Context context) { super(); this.mContext = context; } 

для инициализации контекста и вызова

 YoutubeAndYahooParser youtubeAndYahooParser = new YoutubeAndYahooParser(ResultsQueryActivity.this); youtubeAndYahooParser.execute("my string to pass in asynctak"); 

После этого в PostExecute

 Intent intent = new Intent(mContext, ResultsQueryActivity.class); intent.addFlags(Intent.FLAG_ACTIVITY_NEW_TASK); mContext.startActivity(intent); 

Я добавил новый флаг из-за того, что я получил в LogCat следующее:

* Для вызова функции startActivity () из контекста Activity требуется флаг FLAG_ACTIVITY_NEW_TASK. Это действительно то, что вы хотите? *

Я прав?

    Вы должны передать контекст приложения, а не контекст из локальной активности. Т.е. используйте context.getApplicationContext () и сохраните это в локальной переменной в подclassе AsyncTask.

    Код может выглядеть примерно так:

     public class MyAsyncTask extends AsyncTask { Context context; private MyAsyncTask(Context context) { this.context = context.getApplicationContext(); } @Override protected Object doInBackground(Object... params) { ... } @Override protected void onPostExecute(List result) { super.onPostExecute(result); MainActivity.progressDialog.dismiss(); context.startActivity(new Intent(context, ResultsQueryActivity.class)); } } 

    вы бы назвали это следующим образом:

      new MyAsyncTask(context).execute(); 

    Я попробовал это сейчас … он работает в методе PostExecute !!!

     Intent intent_name = new Intent(); intent_name.setClass(getApplicationContext(),DestinationClassName.class); startActivity(intent_name); 

    Но лучше, если вы начнете новый Намеренный На основе ответа (результата), полученного из предыдущих действий.

    Это устранит возможность ответа на ошибку при вызове нового намерения.

    Пример, если предыдущая активность должна была вернуться успешно … или Добро пожаловать, чтобы начать новое намерение, я мог бы проверить это таким образом

      protected void onPostExecute(String result) { if (result.equals("Succesfully...")){ context.startActivity(new Intent(context, Login_Activity.class)); Toast.makeText(context, result, Toast.LENGTH_LONG).show(); }else if (result.contains("Welcome")){ context.startActivity(new Intent(context, MainActivity.class)); }else { Toast.makeText(context,result,Toast.LENGTH_LONG).show(); } } 
    Давайте будем гением компьютера.