2011-12-28 3 views
0

Я новичок в Android, и вот у меня вопрос об архитектуре:Android, ListViews и деятельность архитектура

Я активность, которая отображает ListView социальных классов сетей, каждый класс социальной сети является регулярным классом (не Activity), который реализует интерфейс, который имеет метод входа. Поэтому, когда я нажимаю одну социальную сеть из ListView, я вызываю метод входа в сеть, выбранный, и этот метод должен вызывать операцию, которая отображает веб-просмотр с сайтом входа в эту сеть, чтобы получить токен Oauth, когда пользователь регистрирует и авторизация приложения, веб-просмотр должен быть закрыт, а элемент ListView должен показать, что пользователь теперь зарегистрирован для выбранной сети.

Так что мои вопросы: Обычный класс (не мероприятие) может вызвать активность, чтобы открыть веб-просмотр? Как? И как же этот класс может прослушать результат Activity и отправить этот ответ на Activity, который отображает ListView, чтобы его обновить? Является ли эта архитектура ок? Я думаю, что должен быть лучший и элегантный способ, нет?

Спасибо!

ответ

1

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

Вы можете проверить страницу this, чтобы узнать, как вы можете это сделать.

Если вы все еще хотите начать свою деятельность с не Activity Class, тогда вы должны сделать Application Context Provider и начать свою деятельность с использованием контекста приложения. Обратите внимание, что вы должны установить флаг NEW_TASK, когда вы начинаете действие из класса неактивности. Проблема в том, что я не думаю, что вы можете вызвать метод onActivityResult(), если вы начнете эту деятельность таким образом.

+0

Hi @Cata, спасибо за ваш ответ. Если я сделаю это в первую очередь, я должен выполнить реализацию каждой социальной сети в этой деятельности ListView, потеряв идею наличия класса каждой социальной сети, который обрабатывает логин, или я все еще могу это сделать? – Spike777

+0

Ваш прием :)! – Cata

+0

Я израсходовал до того, как я смог опубликовать полный ответ: p – Spike777

0

A WebView наследует от вида, поэтому он должен быть в структуре макета Activity. Вам нужно будет создать и активность для работы с веб-логином, если это ваше желание.

Вы можете использовать startActivityForResult, чтобы указать, что вы хотите получить результат запускающего действия, а затем использовать setResult для возврата результата.

0

Для того чтобы что-то назвать деятельностью, ему нужен контекст. Если вам нужен класс, который не является активностью, а частью действия, чтобы иметь этот авторитет, вам нужно передать контекст в этот класс. Будьте осторожны, если этот класс каким-то образом остается постиндустриальным, вы можете протекать в контексте.