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

Foi útil?

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.

  1. Quando você executa seu aplicativo, Activity ( AndroidManifest.xml ) é chamado.
  2. View ( poderia ser chamado, main.xml ) é mostrado exibindo um botão de login
  3. Ao clicar no botão, você lançar o seu WebView
  4. login bem-sucedido, muda o View para uma exibição personalizada exibindo nomes de usuário em um ListView (pode ser um arquivo XML predefinido que você cria chamado userlist.xml )
  5. Usando onClick em um nome de usuário específico vai lançar uma WebView 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

Licenciado em: CC-BY-SA com atribuição
Não afiliado a StackOverflow
scroll top