в моем проекте есть несколько классов. Пусть назовем их A, B, C, D. Я обнаружил 2 проблемы: например, я перехожу из класса "А" в "В", а затем в "С". В классе "B" есть кнопка и счетчик. Когда я сначала нажимаю btn в классе "B" , запускается счетчик и т.д. когда счетчик находится под номером 6, открывается класс "C" . Когда я вернусь теперь из класса "С" в класс "В" (нажав на обратный бит моего телефона), счетчик находится в номере 6, а не 0.
Вторая проблема: я иду от "А" до "В", затем "С", затем обратно в "В", затем в "С" и т.д. Когда я нажимаю назад btn в классе "C" , я должен вернуться в класс "B" , затем "A", затем выйдите. Но вот что происходит: я возвращаюсь в класс "B" , затем возвращаюсь в класс "C" , затем в класс "B" , затем в класс "A", поэтому он возвращается через все классы, которые были открыты ранее.
Что еще, моя кнопка выхода (Main.this.finish();)
в firworks только в начале. Если я пройду через некоторые классы, она ведет себя как кнопка "Назад", что делает невозможным выполнение приложения.
Я не знаю, связаны ли эти проблемы или нет, но я хотел бы услышать ваше мнение о них.
Спасибо.
Изменить. Я прочитал ваши комментарии и предлагаемые веб-страницы. Я хотел бы быть более конкретным сейчас. А пока поговорим о трех действиях. Start.java, CustomizeDialog.java и Highscores.java. Когда пользователь открывает Start.java(нажав кнопку в Main.java), запускается счетчик. Затем через 3 секунды пользователь автоматически перенаправляется в CustomizeDialog.java для записи своего имени. После нажатия OK в этом диалоговом окне он будет перенаправлен на HighScores.java. Теперь, если он нажмет кнопку "Назад", он вернется к Start.java. Здесь счетчик находится там, где он был ранее (я знаю, что это поведение Android).
Итак, Главная → Старт → НастройкаDialog → Higshcores → click back → Start (CustomizeDialog не является активностью, а диалогом, поэтому он опускается при возврате)
Я пробовал это в манифесте, но ничего не делал:
<activity
android:name=".Start"
android:label="@string/app_name"
android:finishOnTaskLaunch="true">
</activity>
Вот как я использую счетчик:
В прослушивателе кнопок в методе onCreate:
counter = new MyCount(3000,1000);
if (started == false)
{
counter.start();
started = true;
}
Вне метода onCreate:
public class MyCount extends CountDownTimer{
public MyCount(long millisInFuture, long countDownInterval) {
super(millisInFuture, countDownInterval);
}
public void onFinish() {
//filewrite
CustomizeDialog customizeDialog = new CustomizeDialog(Start.this);
customizeDialog.show();
};
@Override
public void onTick(long millisUntilFinished) {
tv.setText("" + millisUntilFinished/1000);
}
И прослушиватель кнопки OK в CustomizeDialog:
Intent intenthighscores = new Intent(mActivity, Highscores.class);
mActivity.startActivity(intenthighscores);
//Activity mActivity; is declared at the beginning of the dialog
Я удалил кнопку выхода, так как я прочитал, что это не нужно, я буду иметь дело с ней позже, как со второй проблемой, если она будет существовать, поскольку она связана с первой проблемой.
Что касается ваших первых двух проблем: это нормальное поведение, см. в этой статье для подробного объяснения обратного стека (также обратите внимание, что "class" является общим выражением, компоненты Android, о которых вы говорите, называются Activity).
О выходе приложения, пожалуйста, прочитайте этот вопрос и первый ответ.
Действие B не восстанавливается после завершения операции C. Если вы хотите reset счетчик, выполните его в onResume()
методе активности B.
Я не знаю, в чем проблема. Вы переопределяете onBackPressed()
или onKeyDown()
?
Main.this.finish()
завершение только одного действия - активность Main. Он не завершает работу.