En Android, ¿cómo desarrollar esto? (Actividad y puntos de vista que se trate)
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
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.
- Cuando se ejecuta la aplicación,
Activity
( AndroidManifest.xml ) se llama. -
View
( podría ser llamado, main.xml ) se muestra que muestra un botón de inicio de sesión - Al hacer clic en el botón, iniciar su
WebView
- Inicio de sesión correcto, cambia el
View
a una vista personalizada que muestra los nombres de usuario en unListView
(podría ser un archivo XML que se crean predefinido llamado userlist.xml ) - Uso
onClick
en un nombre de usuario específico pondrá en marcha unWebView
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