Android-проблема со спиной

1

в моем проекте есть несколько классов. Пусть назовем их 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

Я удалил кнопку выхода, так как я прочитал, что это не нужно, я буду иметь дело с ней позже, как со второй проблемой, если она будет существовать, поскольку она связана с первой проблемой.

Теги:

2 ответа

1

Что касается ваших первых двух проблем: это нормальное поведение, см. в этой статье для подробного объяснения обратного стека (также обратите внимание, что "class" является общим выражением, компоненты Android, о которых вы говорите, называются Activity).

О выходе приложения, пожалуйста, прочитайте этот вопрос и первый ответ.

1
  • Действие B не восстанавливается после завершения операции C. Если вы хотите reset счетчик, выполните его в onResume() методе активности B.

  • Я не знаю, в чем проблема. Вы переопределяете onBackPressed() или onKeyDown()?

  • Main.this.finish() завершение только одного действия - активность Main. Он не завершает работу.

Ещё вопросы

Сообщество Overcoder
Наверх
Меню