Android - Spinner: como distinguir as ações do usuário das ações do computador em um OnItemSelectedListener

Estou com problemas para gerenciar um spinner, posso pedir sua ajuda?

Eu tenho um spinner com seu adaptador. Inicializo o girador com uma lista de valores ao iniciar minha atividade. Então forço o valor selecionado a ser o usado no objeto que eu gerencio.

Depois que a tela é inicializada: Quando o usuário seleciona um valor no botão giratório, de acordo com o valor selecionado, posso continuar (ou não) em outra atividade para permitir que o usuário escolha um valor complementar e necessário. Se o usuário "cancelar" esta segunda atividade, desejo reverter o botão giratório para o valor selecionado anterior e cancelar algumas ações realizadas nesse meio tempo. Se o usuário chegar ao final da segunda atividade, tudo está bem e eu quero que o juste atualize a exibição do girador com os dados selecionados na segunda atividade (sobrecarrego o método getView no adaptador para fazer isso).

No geral, eu posso fazer tudo isso facilmente, no entanto, quando forço o valor selecionado no botão giratório no início da minha atividade ou quando retorna da segunda atividade com "Cancelar", o evento do valor de alteração é capturado e o segundo atividade é acionada (o usuário não clicou em nada).

Como você permitiria que a segunda atividade fosse lançada apenas se a alteração do valor selecionado no spinner fosse devido a uma ação manual do usuário e evitasse que a mesma segunda atividade fosse lançada quando o valor do spinner for alterado "no código "?

Tentei muitas soluções, como definir um booleano no adaptador que informa se o próximo evento será gerado devido a uma ação "no código". Ou também colocando um booleano no adaptador que informa se o adaptador foi inicializado e forço esse booleano a ser verdadeiro no primeiro evento capturado de alteração. Mas nada que realmente funcione bem.

Obrigado pela ajuda.

Oliver

questionAnswers(1)

yourAnswerToTheQuestion