2013-04-27 2 views
0

Так что мое приложение такое. У меня есть список, Categories. Когда пользователь нажимает на категорию, запускается новое действие, Products. Некоторые продукты, которые он может купить, появляются. После того, как он выберет то, что он хочет, он может нажать кнопку . Закажите кнопку, чтобы перейти к действию Checkout. Прямо сейчас, для того, чтобы отправить данные из Products в Order, у меня есть parcelable класс, и использовать его как это:Передача данных между действиями с посыльными

Intent orderActivity = new Intent(Main.this, Order.class); 
orderActivity.putExtra("parcel", listOrdered); 

Дело в том, что, возможно, пользователь хочет, чтобы купить вещи из нескольких категорий. Поэтому после того, как он выбирает продукты из категории 1, он возвращается к активности Categories (продукты, которые он выбрал, необходимо сохранить), выбирает другую категорию и выбирает там продукты.

Мой вопрос: могу ли я использовать подход сверху, чтобы сделать это? Или мне нужно onAnctivityResult() и тому подобное?

+0

Немного ОТ. Почему вы не используете БД для отслеживания выбранных продуктов? Он также будет сохраняться при закрытии приложения. – rciovati

+0

Никогда не думал об этом ... Я думал об использовании БД только для запоминания предыдущих заказов ... – Teshte

ответ

1

Вы должны организовать свой код следующим образом:

В деятельности Categories, вести список выбранных продуктов, он должен быть parcelable или сериализации, что проще.

Позвоните по номеру startActivityForResult, когда вы позвоните в «Продукты» и передайте ему как выбранную категорию, так и список выбранных продуктов. Когда пользователь выполнит выбор новых продуктов, вызовите setResult, чтобы активность Categories могла получить новый список выбранных продуктов с помощью переопределения onActivityResult.

Существуют и другие варианты, более продвинутые и ориентированные на объекты, но они не такие стандартные, как этот метод, и немного более продвинутые. Но если вам интересно, вы можете взглянуть на рамки для инъекций, такие как RoboGuice или Dagger, чтобы получить общий экземпляр ProductManager во всех действиях, которые вы показываете.

+0

+1 для решения 'ProductManager', довольно элегантного. – rciovati

+0

Привет, RCI, я согласен, но вопрос, похоже, начинается, так что для первого шага было бы более важно овладеть основой андроидной структуры, прежде чем заниматься более передовой технологией. – Snicolas

+1

Да, правда. Но также, не используя никакой рамки DI, обычный синглтон мог бы сделать трюк. – rciovati

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