Как передать объект из одного действия в другое на Android - PullRequest
696 голосов
/ 29 апреля 2010

Я пытаюсь отправить объект моего клиента класса из одного Activity и отобразить его в другом Activity.

Код для класса клиента:

public class Customer {

    private String firstName, lastName, Address;
    int Age;

    public Customer(String fname, String lname, int age, String address) {

        firstName = fname;
        lastName = lname;
        Age = age;
        Address = address;
    }

    public String printValues() {

        String data = null;

        data = "First Name :" + firstName + " Last Name :" + lastName
        + " Age : " + Age + " Address : " + Address;

        return data;
    }
}

Я хочу отправить свой объект с одного Activity на другой, а затем отобразить данные на другом Activity.

Как мне этого добиться?

Ответы [ 31 ]

0 голосов
/ 02 ноября 2014

Я всегда задавался вопросом, почему это не может быть так просто, как вызов метода другой деятельности. Недавно я написал служебную библиотеку, которая делает его почти таким же простым. Вы можете проверить это здесь (https://github.com/noxiouswinter/gnlib_android/wiki/gnlauncher).

GNLauncher делает отправку объектов / данных в активность из другого действия и т. Д. Такой же простой, как вызов функции в действии с необходимыми данными в качестве параметров. Он вводит безопасность типов и устраняет все трудности, связанные с сериализацией, присоединением к цели с использованием строковых ключей и отменой того же на другом конце.

Использование

Определите интерфейс с методами, которые вы хотите вызвать в Activity для запуска.

public interface IPayload {
    public void sayHello(String name, int age);
}

Реализуйте вышеуказанный интерфейс в Activity для запуска. Также сообщите GNLauncher, когда действие будет готово.

public class Activity_1 extends Activity implements IPayload {

    @Override
    protected void onCreate(Bundle savedInstanceState) {
        super.onCreate(savedInstanceState);
        //Notify GNLauncher when the Activity is ready. 
        GNLauncher.get().ping(this);
    }

    @Override
    public void sayHello(String name, int age) {
        Log.d("gnlib_test", "Hello " + name + "! \nYour age is: " + age);
    }
}

В другой операции, получите прокси для вышеупомянутой операции и вызовите любой метод с нужными параметрами.

public class Activity_2 extends Activity {
    public void onClick(View v) {
        ((IPayload)GNLauncher.get().getProxy(this, IPayload.class, Activity_1.class)).sayHello(name, age);
    }
}

Будет запущено первое действие и вызван метод с необходимыми параметрами.

Предпосылки

Пожалуйста, обратитесь к https://github.com/noxiouswinter/gnlib_android/wiki#prerequisites для получения информации о том, как добавить зависимости.

...