Pergunta

Eu criei uma aplicação que está de forma assíncrona comunicação com o servidor. Quando o aplicativo faz uma solicitação do servidor um novo diálogo (atividade) com "carregamento" notificação é criado. Os principais implementos atividade métodos para a manipulação de respostas do servidor e eu gostaria de fechar a atividade em primeiro plano quando a principal atividade recebe a resposta do servidor.

diálogo Notificação é criado da seguinte forma:

 private void showServerRequestDialog(String actionLabel){
    Intent intent = new Intent(this, DlgServerRequest.class);
    intent.putExtra(SERVER_REQUEST_ACTION, actionLabel);
    startActivity(intent);

}

Então, quando o usuário tenta para autenticar o seguinte método é chamado:

private void authenticateUser(String IMEI, String username, String password){
    mEncoderConnection.authenticateRequest(IMEI, username, password);
    showServerRequestDialog("Authenticating...");
}

e onAuthenticateResponse resposta de autenticação alças:

public void onAuthenticateResponse(AuthenticateResponse pkg) {
    //code for response handling
    //TODO: close ServerRequestDialog
    }
}

Eu apreciaria se alguém poderia sugerir uma maneira de fechar o diálogo de notificação (DlgServerRequest) quando o onAuthenticateUser () é executado.

Foi útil?

Solução

Por que não usar um ProgressDialog real ou algum outro Dialog? Então, tudo que você precisa fazer é dismissDialog(), e está feito?

Se isso é inaceitável, você tem dois cursos principais de ação que eu posso ver:

  1. Mova seu lógica de autenticação para a classe DlgServerRequest, para que ele possa finish() si.
  2. Coloque sua instância de sua classe DlgServerRequest em um membro de dados estáticos para que o seu principal atividade pode chamar finish() nele

Se você escolher a opção # 2, é realmente importante para null que membro de dados estáticos para vazamentos de memória evitar.

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