Как я знаю, что приложение открыто на Android, конфликт между использованием намерений между действиями - PullRequest
0 голосов
/ 01 марта 2012

Я занимаюсь разработкой приложения с тремя действиями, которые называются Activity Ex1, Ex2 и Ex3.Действия Ex2 и Ex3 содержат файл манифеста флага No History = true.

Ex1 - основное действие

поток моего приложения Ex1<->Ex2-->Ex3

Я установлю некоторые значения вПример 1 Действия при загрузке приложения, такие как отсутствие подсчета и установки значений для некоторых логических значений.

При первом запуске оно работает правильно.После этого я перехожу к Ex1 к Ex2 и возвращаюсь к Ex1, используя намерение (потому что я должен передать значения из Ex2 в Ex1), так что значения активности Ex1 снова сбрасываются, это вызывает неправильные вычисления в моем приложении.

Мое требование - всякий раз, когда я открываю приложение в это время, нет необходимости увеличивать счет и делать другие значения настроек.Переменные счета и переменные установки не должны изменяться / изменяться всякий раз, когда я двигаюсь между Ex1 к Ex2, Ex2 к Ex1.Это должно быть сделано только тогда, когда я открою приложение.Как мне это сделать?

1 Ответ

0 голосов
/ 01 марта 2012

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

Если я вас правильно понимаю, вы переключаетесь между действиями Ex1 и Ex2 следующим образом:

Intent intent = new Intent(getBaseContext(), Ex1.class);
//you are probably putting some data in your intent like this:
intent.putExtra("myData", myData);
startActivity(intent);

Таким образом, при переключении на другое действие вы можете установить дополнительный логический флаг, указывающий, что ваше действие было переключено с другого действия. Поэтому, когда вы переходите на Ex1, вставьте это в ваш Ex2 (и, возможно, во все другие действия, которые переключаются на Ex1)

Intent intent = new Intent(getBaseContext(), Ex1.class);
intent.putExtra("switched", true);
startActivity(intent);

Затем просто поместите следующее условие в вашу Ex1 активность в место, где вы устанавливаете данные (обычно onCreate метод)

//was activity switched to, or did application just start?
//if "switched" key isnt set in your intent, this just returns false
boolean wasActivitySwitchedTo = getIntent().getExtras().getBoolean("switched");
if(!wasActivitySwitchedTo) {
//application started - **do your value setting here**
...
} else {
//activity was switched to from another activity - **dont do your setting**
...
}
...