В Android, как бы вы развили это? (вопрос об активности и взглядах) - PullRequest
3 голосов
/ 07 февраля 2010

Когда пользователь открывает приложение, на экране появляется кнопка с надписью «войти».

Пользователь нажимает кнопку, и появляется веб-представление, позволяющее ему войти на сайт.

После входа в систему (приложение должно было бы как-то это знать), веб-просмотр исчезнет, ​​а затем появится список имен пользователей. (ListView?)

Когда пользователь нажимает на одно из имен пользователей, появляется веб-просмотр профиля имени пользователя. Конечно, когда пользователь нажимает «назад», он возвращается к списку имен пользователей.

Может ли кто-нибудь объяснить мне это с точки зрения Активность и просмотры ? Я использую два действия, чтобы сделать это? Скрывать ли веб-просмотр или просмотр списка, когда пользователь нажимает между ними?

Я сделал учебное пособие (учебник по блокнотам), но я все еще не уверен, как лучше всего это разработать.

Спасибо

Ответы [ 3 ]

3 голосов
/ 07 февраля 2010

Когда пользователь открывает приложение, появляется экран с кнопкой, на которой написано «Войти». Пользователь нажимает на кнопку, и появляется веб-просмотр, позволяющий ему войти на сайт. После входа в систему (приложение должно знать как-то),

Йо может сделать это с двумя отдельными Activity классами. Я бы поставил WebView в свой Activity. Это проще, чем управлять множеством различных View объектов самостоятельно. Кроме того, вы получите переходы между разными вещами, если вы поместите каждую часть в свою собственную Activity.

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

Если вы хотите обнаружить логин, вы можете отслеживать события в WebView, используя WebViewClient. Вы устанавливаете WebViewClient вашего WebView, используя setWebViewClient() метод .

веб-просмотр исчезнет, ​​

Просто запустите следующую Activity, используя Intent и вызовите метод finish() на вашем первом Activity. Если вы сделаете это, то использование не вернется к кнопке входа в систему Activity, если они нажмут назад, поскольку она больше не будет в стеке.

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

и появится список имен пользователей. (ListView?)

Используйте ListActivity. Это Activity, который поставляется с API, предназначенным для отображения одного ListView.

Когда пользователь нажимает на одно из имен пользователей, появится веб-просмотр профиля имени пользователя. Конечно, когда пользователь нажимает «назад», он возвращается к списку имен пользователей.

Поэтому используйте метод onListItemClick() в ListActivity, чтобы обнаружить касание и запустить новый Activity, содержащий WebView, чтобы показать профиль. Так как это в новом Activity, обратная обработка полностью автоматическая.

1 голос
/ 07 февраля 2010

Прежде всего, я рассмотрю другой способ решения этой проблемы.

Вы можете создать свой собственный макет входа в Andoid и отправить свои данные для входа на сайт. После этого вы должны создать ListView всех имен пользователей. Если пользователь выбирает одно из этих имен пользователей, вам следует открыть WebView.

Проблема будет в том, что вам придется проверить, был ли вход успешным или нет! По сути, вам нужно выполнить HttpRequest, проанализировать вывод и проверить его.

Если вы хотите войти на свой сайт, вы можете написать небольшую оболочку для вашего логина, которая возвращает true / false для вашего логина. (PHP-оболочка, которая возвращает XML или обычный текст)

В любом случае, если вы действительно хотите выполнить вход через WebView, вы можете проверить его с помощью:

private void initWebView(final WebView mWebView) {
    mWebView.setWebViewClient(new WebViewClient() {
        public boolean shouldOverrideUrlLoading(WebView view, String url) {
            Page = new WebView(YourClass.this);
            Page.getSettings().setJavaScriptEnabled(true);
            Page.loadUrl(url);

            if(url.contains("OkDoLogIn.php")) {
                /* Check if login was successful if true start new Activity */
            }
            return true;
        }
    });
}

С помощью url.contains ("OkDoLogIn.php") вы в основном проверяете, какой URL собирается открыть. В вашем случае это будет URL или часть URL вашей кнопки входа.

Тем не менее, вам придется проверить, был ли ваш вход успешным или нет!

Редактировать: см. 1-й комментарий!

1 голос
/ 07 февраля 2010

По сути, все это можно сделать в рамках одного занятия.Я могу попытаться легко продемонстрировать, как это можно сделать.

  1. Когда вы запускаете свое приложение, вызывается Activity ( AndroidManifest.xml ).
  2. View (можно вызвать , main.xml ) отображается с кнопкой входа в систему
  3. После нажатия кнопки вы запускаете свой WebView
  4. Успешный вход в систему,переключает View в настраиваемое представление, отображающее имена пользователей на ListView (может быть созданный вами заранее заданный XML-файл с именем userlist.xml )
  5. Использование onClick для определенного имени пользователязапустит WebView относительно этого конкретного имени пользователя.

Чтобы вернуться к вашему приложению, когда пользователь нажмет кнопку Назад, вам может понадобиться использовать onPause и onResume, но я неконечно.

Это может быть не лучший или даже не лучший подход, но он может помочь устранить любую путаницу.

РЕДАКТИРОВАТЬ:

Activity являетсячто связано с AndroidManifest.xml в качестве основной точки входа в приложение.A View содержит пользовательские интерактивные компоненты внутри вашего Activity, такие как кнопка входа, отображение имени пользователя, просмотр содержимого в Интернете (WebView) и т. Д.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...