Pregunta

Cuando el usuario abre la aplicación, hay una pantalla con un botón en él, que dice "login".

El usuario hace clic en el botón, y una vista web aparece para permitirle iniciar sesión en el sitio web.

Después de iniciar la sesión (la aplicación tendría que saber de alguna manera), la vista web desaparecería, y luego una lista de nombres de usuario aparecerá. (ListView?)

Cuando el usuario hace clic en uno de los nombres de usuario, una vista web de perfil del usuario aparecerá. Por supuesto, cuando el usuario pulsa "atrás", que se remonta a la lista de nombres de usuario.

Puede alguien explicar esto a mí en términos de Actividad y Vistas ? ¿Estoy usando dos actividades para hacer esto? ¿Oculto vista de lista en vista web o cuando el usuario hace clic entre ellos?

Lo hice el tutorial (tutorial bloc de notas), pero todavía estoy confundido en cuanto a cuál es la mejor manera de desarrollar esto.

Gracias

¿Fue útil?

Solución

  

Cuando el usuario abre la aplicación, hay una pantalla con un botón en él, que dice "login". El usuario hace clic en el botón, y una vista web aparece para permitirle iniciar sesión en el sitio web. Después de iniciar la sesión (la aplicación tendría que saber de alguna manera),

Puedes hacer esto con dos clases separadas Activity. Yo pondría el WebView en su propia Activity. Esto es más fácil de administrar una gran cantidad de diferentes objetos View mismo. Además, obtendrá las transiciones entre las diferentes cosas si se pone cada parte en su propia Activity.

Usted puede iniciar la sesión con Activity el método startActivityForResult() , lo que le permite volver si el inicio de sesión se ha realizado correctamente o no.

Si desea detectar el inicio de sesión, puede supervisar los eventos de una WebView utilizando un WebViewClient. Se establece el WebViewClient de su WebView utilizando el método setWebViewClient() .

  

la vista web desaparecería,

Simplemente inicie la siguiente Activity utilizando un Intent y llamar a la método finish() en su primer Activity. Si se hace esto, entonces el uso no va a volver a iniciar sesión botón de actividad si volver clic, ya que no estará en la pila más.

Lo que no tengo claro es cuánto tiempo el inicio de sesión en el sitio web será válida para. Es posible que tenga que establecer las banderas en las actividades en su Manifiesto , para asegurar que el usuario tiene que conectarse de nuevo si se van y luego regresar a su aplicación.

  

y, a continuación una lista de nombres de usuario aparecerá. (ListView?)

Utilizar un ListActivity . Se trata de una Activity que viene con la API diseñada para la visualización de una sola ListView.

  

Cuando el usuario hace clic en uno de los nombres de usuario, una vista web de perfil del usuario aparecerá. Por supuesto, cuando el usuario pulsa "atrás", que se remonta a la lista de nombres de usuario.

Así que utilice el método onListItemClick() en ListActivity para detectar al tacto y lanzar una nueva Activity que contiene el WebView para mostrar el perfil. Como se trata de una nueva Activity el manejo posterior es todo automático.

Otros consejos

En esencia, todo podría hacerse dentro de una actividad. Puedo tratar de demostrar fácilmente cómo se podría hacer.

  1. Cuando se ejecuta la aplicación, Activity ( AndroidManifest.xml ) se llama.
  2. View ( podría ser llamado, main.xml ) se muestra que muestra un botón de inicio de sesión
  3. Al hacer clic en el botón, iniciar su WebView
  4. Inicio de sesión correcto, cambia el View a una vista personalizada que muestra los nombres de usuario en un ListView (podría ser un archivo XML que se crean predefinido llamado userlist.xml )
  5. Uso onClick en un nombre de usuario específico pondrá en marcha un WebView con respecto a ese nombre de usuario específico.

Para volver de nuevo a su aplicación cuando el usuario pulsa el botón Atrás, puede que tenga que utilizar onPause y onResume pero no estoy seguro.

Esto puede no ser el mejor enfoque, o incluso una buena, pero podría ayudar a aclarar cualquier confusión.

EDIT:

Una Activity es lo que se une a la AndroidManifest.xml como el principal punto de entrada en una aplicación. Un View contiene componentes interactiva de usuario dentro de su Activity, como un botón de inicio de sesión, mostrando el nombre de usuario, visualización de contenidos en la web (WebView), etc.

En primer lugar me gustaría considerar una forma diferente de abordar este problema.

Se puede crear su propio diseño de inicio de sesión en Andoid y enviar sus datos de acceso al sitio web. Después de hacer esto, usted debe crear un ListView de todos los nombres de usuario. Si el usuario selecciona uno de estos nombres de usuario debe abrir una vista web.

El problema sería que usted tendría que comprobar si la conexión se ha realizado correctamente o no! Básicamente lo que necesita hacer una HttpRequest, analizar la salida y comprobar que funciona.

Si se trata de su sitio web que desea iniciar sesión se podría escribir un pequeño contenedor para su nombre de usuario que devuelve verdadero / falso para su inicio de sesión. (Php envoltura que devuelve XML o de texto claro)

De todos modos, si realmente quiere hacer el login a través de WebView se puede comprobar a través de:

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;
        }
    });
}

Con url.contains ( "OkDoLogIn.php") que, básicamente, lo que comprueba url está a punto de abrir. En su caso sería la url o una parte de la URL de su botón de inicio de sesión.

Sin embargo usted tiene que comprobar si su nombre de usuario tuvo éxito o no!

Editar: Ver primera comentario

Licenciado bajo: CC-BY-SA con atribución
No afiliado a StackOverflow
scroll top