No Android, como você desenvolver este? (Actividade e vistas questão)
Pergunta
Quando o usuário abre o aplicativo, há uma tela com um botão sobre ele, que diz "login".
O usuário clica no botão, e uma webview aparece para lhe permitir fazer login no site.
Após o login (o aplicativo precisa saber de alguma forma), o webview desapareceria, e, em seguida, uma lista de nomes de usuário irá aparecer. (ListView?)
Quando o usuário clica em um dos nomes de usuário, um webview do perfil do usuário irá aparecer. Claro que, quando os empurrões de usuário "de volta", ele vai voltar para a lista de nomes de usuários.
Alguém pode explicar isso para mim em termos de Atividade and Views ? Estou usando duas atividades para fazer isso? Do I esconder quando o usuário clica entre eles webview ou listview?
Eu fiz o tutorial (tutorial notepad), mas eu ainda estou confuso quanto ao que é a melhor maneira de desenvolver isso.
Graças
Solução
Quando o usuário abre o aplicativo, há uma tela com um botão sobre ele, que diz "login". O usuário clica no botão, e um webview aparece para lhe permitir fazer login no site. Após o login (o aplicativo precisa saber de alguma forma),
Yo pode fazer isso com duas classes Activity
separadas. Gostaria de colocar o WebView
em seu próprio Activity
. Isto é mais fácil de gerenciar lotes de diferentes objetos View
si mesmo. Além disso, você vai ter transições entre coisas diferentes, se você colocar cada peça em sua própria Activity
.
Você pode lançar o login Activity
com o método startActivityForResult()
, permitindo-lhe voltar se o login foi bem sucedido ou não.
Se você quiser detectar o login, você pode monitorar eventos em um WebView
usando um WebViewClient
. Você define o WebViewClient
do seu WebView
usando o método setWebViewClient()
.
o webview desapareceria,
Basta começar a próxima Activity
usando um Intent
e chamada método finish()
em sua primeira Activity
. Se você fizer isso, então o uso não vai voltar na Atividade botão de login se clicar para trás, uma vez que não será na pilha mais.
O que eu não estou claro sobre é quanto tempo o login no site será válido para. Você pode precisar definir os sinalizadores sobre as atividades em seu manifesto , para garantir o usuário tem que logar novamente se eles sair e depois voltar para a sua aplicação.
e, em seguida, uma lista de nomes de usuário irá aparecer. (ListView?)
Use a ListActivity
. Este é um Activity
que vem com a API projetado para a exibição de uma única ListView
.
Quando o usuário clica em um dos nomes de usuário, um webview do perfil do usuário irá aparecer. Claro que, quando os empurrões de usuário "de volta", ele vai voltar para a lista de nomes de usuários.
Portanto, use o método onListItemClick()
em ListActivity
para detectar o toque e lançar um novo Activity
contendo o WebView
para mostrar o perfil. Como este é um novo Activity
a manipulação de volta é tudo automático.
Outras dicas
Essencialmente tudo poderia ser feito dentro de uma atividade. Eu posso tentar demonstrar facilmente como poderia ser feito.
- Quando você executa seu aplicativo,
Activity
( AndroidManifest.xml ) é chamado. -
View
( poderia ser chamado, main.xml ) é mostrado exibindo um botão de login - Ao clicar no botão, você lançar o seu
WebView
- login bem-sucedido, muda o
View
para uma exibição personalizada exibindo nomes de usuário em umListView
(pode ser um arquivo XML predefinido que você cria chamado userlist.xml ) - Usando
onClick
em um nome de usuário específico vai lançar umaWebView
sobre esse nome de usuário específico.
Para voltar à sua aplicação quando o usuário pressiona o botão Voltar, você pode precisar de utilizar onPause
e onResume
mas eu não tenho certeza.
Esta pode não ser a melhor abordagem, ou até mesmo uma boa, mas pode ajudar a esclarecer qualquer confusão.
EDIT:
Um Activity
é o que é ligado ao AndroidManifest.xml como o principal ponto de entrada para um aplicativo. A View
contém componentes usuário interativa dentro de sua Activity
, como um botão de login, exibindo nome de usuário de, visualizar o conteúdo na web (WebView
), etc.
Em primeiro lugar eu consideraria uma maneira diferente de abordar este problema.
Você pode criar seu próprio layout de login em Andoid e enviar seus dados de login para o site. Depois de fazer isso, você deve criar uma lista com todos os nomes de usuário. Se um usuário seleciona um desses nomes de usuário você deve abrir um WebView.
O problema seria, que você teria que verificar se o login foi bem sucedido ou não! Basicamente, você precisa fazer um HttpRequest, analisar a saída e verificá-lo.
Se é o seu site que você deseja entrar você poderia escrever um pequeno wrapper para o seu login que retorna true / false para o seu login. (Invólucro php que retorna XML ou texto simples)
De qualquer forma, se você realmente quer fazer o login via WebView você pode verificá-lo via:
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;
}
});
}
Com url.contains ( "OkDoLogIn.php") você basicamente verificar qual url está prestes a abrir. No seu caso seria o URL ou uma parte do URL do seu botão de login.
No entanto, você teria que verificar se o seu login foi bem sucedido ou não!
Editar: Veja primeiro comentário