Часто разработчики сталкиваются с задачей передачи данных между различными активностями приложения на Android. Особенно актуальна эта проблема становится, когда нужно передать целый объект.
Рассмотрим пример. Пусть есть класс Book
, который содержит информацию о книгах (название, автор, год издания и прочее). И имеется две активности: в первой пользователь выбирает книгу, а вторая активность должна отобразить подробную информацию о выбранной книге.
public class Book { private String title, author; private int year; public Book(String title, String author, int year) { this.title = title; this.author = author; this.year = year; } public String getTitle() { return title; } public String getAuthor() { return author; } public int getYear() { return year; } }
Для передачи объекта между активностями можно воспользоваться механизмом Intent
. Однако, просто так передать объект нельзя: он должен быть сериализуемым или Parcelable
.
Самый простой способ — сделать объект Serializable
. Для этого в классе нужно реализовать интерфейс Serializable
:
import java.io.Serializable; public class Book implements Serializable { // остальной код }
Теперь можно передать объект Book
из одной активности в другую:
// создание объекта Book Book book = new Book("1984", "George Orwell", 1949); // создание Intent Intent intent = new Intent(FirstActivity.this, SecondActivity.class); // добавление объекта Book в Intent intent.putExtra("selected_book", book); // запуск SecondActivity startActivity(intent);
Во второй активности можно получить объект Book
следующим образом:
// получение Intent Intent intent = getIntent(); // извлечение объекта Book Book book = (Book) intent.getSerializableExtra("selected_book"); // теперь можно использовать book для отображения информации о книге
Итак, был описан простой способ передачи объектов между активностями в Android.
Добавить комментарий