Обработка onActivityResult извне действия - PullRequest
7 голосов
/ 15 февраля 2011

Я пытаюсь создать вспомогательный класс для запуска Activity и получения результата возврата (startActivityForResult), чтобы разработчики не писали свой собственный код onActivityResult и не инкапсулировали сложные внутренние детали.

т.е. код вызывающего абонента:

MyIntent i = new MyIntent();
i.getMyData(new OnData() { public void onData(Bundle data) {....} );

Я попытался создать «пустышку» Activity внутри MyIntent просто для того, чтобы иметь возможность переопределить onActivityResult, но действие должно быть объявлено в манифесте, чего пытается избежать класс помощника. Нет setOnActivityResult, который был бы хорошей альтернативой.

Итак, как создать Activity программно и "прикрепить" его, чтобы он имел действительное состояние?

После создания new Activity() я бы хотел называть действие «вложенным», которое является внутренним.

Ответы [ 2 ]

1 голос
/ 15 февраля 2011

Итак, как создать мероприятие программно и "прикрепить" его, чтобы оно имело действительное состояние?

Это невозможно, извините.

Я пытаюсь создать вспомогательный класс для запуска Activity и получить возвращаемый результат (startActivityForResult), чтобы разработчики не писали свой собственный код onActivityResult и инкапсулировали сложные внутренние детали.

Это невозможно,извиняюсь.Самое близкое, что вы можете получить, - это то, как работает JAR интеграции сканера штрих-кода - вы делегируете им onActivityResult() для декодирования результата, полученного от активности сканера.

0 голосов
/ 12 декабря 2013

Может ли простой обратный вызов быть альтернативой?Пользователь помещает обратный вызов в статическое поле вашей библиотеки, и ваша библиотека при необходимости вызовет этот обратный вызов.Самой простой реализацией может быть:

YourSdk.staticCallbackField=new OnData() { public void onData(Bundle data) {....});
MyIntent i = new MyIntent();
startActivity(i);

Когда SDK завершает свою работу, он вызывает обратный вызов:

staticCallbackField.onData(data)

В результате пользовательской активности вместо обратного вызова Связывает данные из onActivityResult.

Вы должны знать о возможных проблемах жизненного цикла активности.Например, если android воссоздает активность пользователя в фоновом режиме, необходимо создать обратный вызов.

...