Похоже, что у вас открыто несколько копий ваших действий одновременно. Каждый раз, когда вы запускаете новый экземпляр действия, вы просто добавляете новые в стек - все старые действия все еще там. Когда вы звоните this.finish()
, он просто показывает вам следующее последнее открытое действие. Я не уверен, почему это экран «Спасибо», так как, по-видимому, он открывается только в конце, но тогда я не полностью следую последовательности, в которой ваши действия вызываются.
То, что вы можете попытаться сделать, чтобы это исправить, это либо: 1) использовать finish()
каждый раз после начала нового действия для другого вопроса (чтобы одновременно был открыт только один вид деятельности), либо 2) посмотрите, можете ли вы использовать флаг намерения CLEAR_TOP. Это запускает целевую активность, убивая все, что могло быть над ней в стеке. Например, если у вас есть действия: A, B, C, C, C, C, C (и т. Д. Для каждого вопроса), то запуск A с CLEAR_TOP уничтожит все экземпляры B и C. Вы можете встроить это в структуру вашей программы изменяя первый экран, пользователь видит, когда он запускает анкету. По умолчанию будет отображаться «приветственное» сообщение с кнопкой для запуска анкеты. Однако, если он начинается с определенного значения, связанного с намерением, он отображает сообщение «Спасибо».
Если вы сделаете это, то после выполнения finish()
действия A пользователь вернется туда, где он был до того, как запустил ваше приложение - предположительно, на домашний экран, если он запускается с виджетом приложения.