Я довольно много работаю с Android Fragment
s, и одна из проблем, с которыми я сталкиваюсь, - это отсутствие надлежащего механизма для передачи в него сложных объектов.
В документации разработчиков Android для Fragments
у них есть метод static
с именем newInstance
, вызываемый с некоторыми простыми аргументами, который будет упакован в Bundle
и использован внутри Fragment
. Однако этот метод нельзя использовать для передачи сложных объектов.
Поскольку я очень часто использую API Fragment, становится все более и более важным передавать ему сложные объекты. Один из способов сделать это - реализовать интерфейс Parcelable
, чего я не хочу делать для всех классов.
Итак, я думал, что смогу сделать это:
- Определите интерфейс, подобный этому, во фрагменте:
// Container Activity must implement this interface
public interface ReceiveDataInterface {
public MyClass getData(uniqueFragmentID);
}
Принудительно выполнить действия с использованием этого фрагмента для реализации интерфейса и вызвать ReceiveDataInterface.getData(getArgument.getString(UNIQUEID))
- Во фрагменте
Activity
создать экземпляр метода newInstance
, передав uniqueFragmentID
и реализовать ReceiveDataInterface
, который дает данные на основе uniqueFragmentID
.
Это хорошая идея сделать это? если нет, то почему? и как мне это сделать?
Примечание: это делается в тех же строках, что и OnArticleSelectedListener
, описанный в документации.
Любая помощь очень ценится.