У меня есть система онлайн-заказов, где пользователи могут выполнить заказ, по крайней мере, тремя шагами. Каждый шаг ниже, является отдельным видом деятельности:Передача значения от первой активности до третьей активности через AsyncTask
- выбор сделать из плана
- Выберите даты начала
- Выбор содержимого на основе выбранного плана на шаге 1.
Теперь то, что я сделал на шаге 1, как только пользователь нажимает на план и порядок, ниже код работает onClick.
Intent intent = new Intent(context, SelectDate.class);
intent.setFlags(Intent.FLAG_ACTIVITY_NEW_TASK);
Bundle extras = new Bundle();
extras.putString("pass_selected_meal_plan_id",mp_id_pass);
extras.putString("pass_selected_meal_name",mp_name_display);
intent.putExtras(extras);
context.startActivity(intent);
Toast.makeText(context, mp_name_display+" Selected",
Toast.LENGTH_SHORT).show();
Нет во второй операции, я прошу пользователя выбрать дату начала заказа. Это также достаточно просто и не имеет проблем. Но проблема начинается, когда я пытаюсь перейти к третьему действию.
Поскольку мое третье содержание активности зависит от выбора Плана, сделанного в первом действии, поэтому я должен перенести выбранный ID в третье действие. У меня это в Extra Bundle во втором действии как «pass_selected_meal_plan_id».
То, как я загружаю третью деятельность, также имеет решающее значение. Существует два возможных способа запуска третьего действия. Сначала очень просто, положив onClick на следующую кнопку. Я предполагаю, что будет очень просто передать необходимый выбор. Но в этом случае, насколько я знаю, будучи новичком в Android App Development, мне нужно будет нажать кнопку и загрузить контент на основе выбранного Плана.
Второй способ - это то, что я хочу использовать. Я запускаю AsyncTask во втором действии onClick Next. Он работает отлично. Единственное, что я не могу получитьExtras в onPostExecute из предыдущего действия, то есть первого действия.
Я открыт даже для использования глобальных переменных, но не знаю, как это сделать. Зная, что такое глобальные переменные, я не слишком хочу их использовать.
Вот мой onPostExecute код:
@Override
protected void onPostExecute(String result) {
Intent intent = new Intent(ctx, SelectMeals.class);
intent.setFlags(Intent.FLAG_ACTIVITY_NEW_TASK);
Bundle extras = new Bundle();
//Instead of "1" I want the value from previous Activity, which already available in Extras from previous Activity
extras.putString("pass_selected_meal_plan_id", "1");
//This is the second value I want to be transferred from first activity to the third activity
extras.putString("pass_selected_meal_name","Test");
intent.putExtras(extras);
ctx.startActivity(intent);
}
бы очень признателен, если кто-то может помочь.
Вы сказали, что второе действие имеет идентификатор в пакете, обеспечиваемом первым действием. Что на самом деле удерживает вас? Вы не можете получить id из комплекта? – fluffyBatman
Благодарим вас за быстрый ответ. Проблема в том, что я не могу получить значение в onPostExecute, поскольку там определены дополнительные функции для следующего действия. Если я передам его без AsyncTask, он работает отлично. Другими словами, решение этой проблемы может заключаться в назначении getExtras из предыдущей активности в puExtras в onPostExecute. –