AsyncTask: как мне получить доступ к параметрам onPostExecute?

#android

#Android

Вопрос:

Итак, я передаю массив строк в свой метод onPostExecute, но мне было интересно, как я могу получить доступ к выводам этого потока в следующем действии … т.Е. Page.class

Прямо сейчас я использую putExtra, могу ли я что-нибудь еще сделать? После приведенного здесь putExtra, как я могу получить к этому доступ в Page.class . Обратите внимание, что Page.class это НЕ тот класс, который запускает этот поток.

 public void onPostExecute(String[] x){
    d.dismiss();
    Intent i= new Intent(ctx,Page.class);
    i.putExtra("values", x);
    ctx.startActivity(i);



Intent b = getIntent();
        String[] values = b.getStringArrayExtra("values");
        Log.d("hello", values[0]);
  

Комментарии:

1. Все решения работали. Я забыл удалить строку кода, потому что я реализовал AsyncTask из одного потока и не удалил все строки, которые мне были нужны.

Ответ №1:

Page.class Это ваше действие, начатое onPostExecute() , верно?

Тогда все, что вы добавите в дополнительный пакет, будет доступно. @Gix уже опубликовал способ доступа к пакету, поэтому я не буду здесь повторяться. Но, пожалуйста, проверьте класс bundle, чтобы посмотреть, что вы можете поместить внутрь (в принципе, почти все примитивы и массивы в порядке)

Комментарии:

1. Просто прочитайте вашу правку. Пожалуйста, убедитесь, что ваше x значение, которое вы вставили в intent, не пустое. Или проще, вы сначала выходите из системы следующим образом: String[] values = b.getStringArrayExtra(«значения»); Log.d («привет», значения. длина » «);

2. Просто хочу убедиться, что вы не добавляете к нему массив нулевой длины.

3. да, xandy прав, убедитесь, что ваш результирующий массив x не пуст, поэтому просто выполните некоторые протоколирования, чтобы увидеть, что вы отправляете и что получаете, как только начнете новое действие.

4. Я почти уверен, что x не пуст. Я вошел x[0] в onPostExecute метод, и он вернул ожидаемое значение. но когда я пытаюсь получить к нему доступ в классе page, он пуст.

Ответ №2:

В onCreate(...) вашей активности «Страница» просто используйте Intent i = getIntent() , затем используйте String[] values = i.getStringArrayExtra("values")

Комментарии:

1. когда я делаю это, я получаю исключение с нулевым указателем при попытке восстановить значения [0], я добавил то, что пробовал

Ответ №3:

Если вы запускаете страницу активности прямо из onPostExecute, вы должны иметь возможность получить доступ к дополнительным функциям в активности страницы без каких-либо проблем. Способ сделать это — использовать следующий код:

 Bundle extras = getIntent().getExtras();
String values = extras.getString("values");
  

и вот они у вас есть

Комментарии:

1. это не работает, я получаю исключение с нулевым указателем, я добавил то, что пробовал