Синтаксис для создания объекта, реализующего Parcelable, из getParcelableExtra (intent_name) - PullRequest
0 голосов
/ 02 апреля 2012

Я реализую модель DataDroid RESTful-связи, и я столкнулся с ошибкой компилятора при реализации моего SearchCriteria.Проблема в том, что для того, чтобы передать SearchCriteria в качестве дополнительного намерения, мне пришлось заставить его реализовать Parcelable.Однако моей Worker функции start требуется класс SearchCriteria, что приводит к ошибке: Required: my.classes.SearchCriteria; Found: android.os.Parcelable.

Если предположить, что я правильно реализовал Parcelable для моего SearchCriteria классаКак я могу быстро создать объект из посылки (где посылка найдена с помощью getParcelable Extra(INTENT_NAME)?

Редактировать: Я понимаю, что могу сделать это быстро, сделав свой конструктор для SearchCriteria из Parcel public, но есть ли другой способ? На самом деле, это не работает - я перепутал Parcel с Parcelable вещью.

1 Ответ

0 голосов
/ 03 апреля 2012

Предположим, что вы следуете API и заставляете SearchCriteria правильно реализовывать Parcelable, а ваша SearchCriteria была правильно построена или создана из базового бизнес-уровня, либо из базы данных, либо из сервера Http, и т. Д.

Чтобы передать его следующему действию по назначению:

SearchCriteria searchCriteria = createSearchCriteria();
Intent intent = new Intent(getBaseContext(), NextActivity.class);
intent.putExtra("searchCriteria", searchCriteria);
startActivity(intent);

Чтобы извлечь его из намерения в следующем задании:

 SearchCriteria searchCriteria = getIntent().getParcelableExtra("searchCriteria");
 myWorker.search(searchCriteria);

В большинстве случаев нам не нужно беспокоиться о посылке напрямую.

...