2011-01-30 2 views
0

Приложение для Android отслеживает количество правильных ответов, пока пользователь находится в процессе проведения викторины. Если ответ пользователя соответствует правильному ответу, счетчик для отслеживания этого увеличивается. Эта логика имеет место в методе onResume.Android lifecyle question re: приращение счетчика

Проблема заключается в том, что если пользователь нажимает кнопку «домой» из этого действия, затем возвращается в приложение, он возобновляет эту операцию, и счетчик снова увеличивается.

Единственное решение, о котором я могу думать, это установить правильное поле ответа на «магическое число», например, 99, когда произойдет правильный ответ, и сначала проверьте это, прежде чем входить в логику проверки ответа. Если это 99, то пропустите логику проверки ответа и просто перерисуйте.

Есть ли лучший способ сделать это?

ответ

2

Я не совсем уверен в вашей реальной проблеме и конкретно, почему вы увеличиваете счетчик правильных ответов в событии onResume. У вас есть определенная кнопка, где пользователь подтверждает свой ответ. Вы не проверяете правильность данного ответа там, то есть в методе нажатия кнопки?
Реализация такой логики в событии onResume как-то опасна, потому что она называется базовой ОС Android.

+0

Оба ответа были хорошими, поэтому я только выбрал один и поддержал оба. Причина, по которой ответ не проверяется в событии onClick, заключается в том, что он передает управление другой активности, которая отображает правильный ответ, общее количество правильных ответов, оставшиеся вопросы и т. Д. То, что я не получал, это то, что когда завершение работы, он отключается от стека и уничтожается - поэтому onCreate вызывается каждый раз. –

+0

Хм .. Я не знаю логику вашего приложения в деталях, но активность обычно следует использовать для одного варианта использования, то есть для отображения списка элементов. С сайта разработчика Android: «... это единственная, целенаправленная вещь, которую пользователь может сделать». В принципе, предложение вопроса, а также отображение правильного ответа/если ответ был верным, на мой взгляд, сосредоточен на одном действии. Вы можете сделать это, скрыв/показывая элементы в этом действии. Вид вопроса, который отображается, определяется намеренным ури, переданным самой деятельности. Таким образом, вы решите свою проблему :) – Juri

+0

Мне пришло в голову использовать тот же экран для ответа на вопрос. Одна из проблем заключается в том, что компоновка немного сложнее и сложнее, благодаря дополнительным полям и управлению полями для отображения/скрытия. Хотя я * мог бы пойти так, если бы я снова это сделал, все еще не уверен. –

2

Похоже, вы используете метод жизненного цикла приложения, чтобы вызвать эффект, не связанный с жизненным циклом. Пожалуйста, разместите код. Если вы полагаетесь на onResume, чтобы указать, что вы вернулись из другой Activity, вы должны взглянуть на startActivityForResult. Если это не так, вам нужно будет опубликовать некоторое описание вашей программы. Однако вы не должны использовать onResume для чего-либо помимо настройки состояния ваших приложений, поскольку вы не можете всегда контролировать, как его вызывать.

Смежные вопросы