Я всегда задавался вопросом, почему это не может быть так просто, как вызов метода другой деятельности. Недавно я написал служебную библиотеку, которая делает его почти таким же простым. Вы можете проверить это здесь (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 для получения информации о том, как добавить зависимости.