У меня возникла странная проблема, скажем, у меня есть два вида действий: A и B, приложение начинается с Activity A, я перехожу к активности B, нажав кнопку Android Home, вернусь в приложение, которое приносит мне назад к Activity B. Затем я нажимаю кнопку «Назад» (либо аппаратное обеспечение на панели инструментов), и это закрывает приложение, но оно должно возвращать меня в Activity A. Активность B не отменяет onBackPressed и имеет активность A, указанную как PARENT_ACTIVITY в манифесте. Я начинаю с Intent без флагов. Любая идея, почему это происходит? БлагодаряАктивность в фоновом режиме убивается, когда нажата кнопка «Домой»
ответ
спасибо за помощь, проблема была вызвана этим флагом для активности в манифесте андроида: launchMode = singleinstance (это не изначально мой проект, поэтому я пропустил это, я просто надеюсь, что я не винил что-то еще, удалив его)
В вашей активности А когда вы называете деятельность B, может быть, у вас есть следующие команды:
finish();
Если да, то вы должны удалить эту строку. Затем, когда вы нажимаете клавишу «Назад» из своей активности B, вы должны вернуть A. Если нет, можете попробовать поделиться своим кодом.
Поведение кнопок на задней панели зависит от версии системы. Существует поддержка для обеспечения навигации обратно в старых версиях Android, описано здесь:
https://developer.android.com/training/implementing-navigation/ancestral.html
<application ... >
...
<!-- The main/home activity (it has no parent activity) -->
<activity
android:name="com.example.myfirstapp.MainActivity" ...>
...
</activity>
<!-- A child of the main activity -->
<activity
android:name="com.example.myfirstapp.DisplayMessageActivity"
android:label="@string/title_activity_display_message"
android:parentActivityName="com.example.myfirstapp.MainActivity" >
<!-- Parent activity meta-data to support 4.0 and lower -->
<meta-data
android:name="android.support.PARENT_ACTIVITY"
android:value="com.example.myfirstapp.MainActivity" />
</activity>
</application>
Самый лучший и самый удобный способ для отладки обратно проблемы стека, чтобы включить «Не сохранять действия '» в разработчик.
Это мое лучшее предположение. Удачи!
Для того, чтобы запустить новую деятельность, не разрушая старую, вы должны добавить флаг FLAG_ACTIVITY_NEW_TASK
намерению, который будет выполнять деятельность:
Intent intent = new Intent(MainActivity.this, MainActivity2.class);
intent.setFlags(Intent.FLAG_ACTIVITY_NEW_TASK);
startActivity(intent);
как при установке этого флага:
эта деятельность станет началом новой задачи по этой истории стек. Задача (от активности, которая начала ее до следующей задачи ) определяет атомную группу действий, которую пользователь может перемещать . Задачи могут быть перенесены на передний план и фон; все действия внутри конкретной задачи всегда остаются в том же порядке.
поэтому деятельность, которая началась она будет оставаться в стеке, и, следовательно, вы можете вызвать его снова, и, следовательно, он также может быть вызвана автоматически снова при нажатии BACK_BUTTON даже если нажата HOME_BUTTON ранее.
и вы должны объединить @gduh ответ с моим, за что вы должны убедиться, что вы не вызывая finish();
в ActivityA
при вызове ActivityB
.
опубликовать исходный код – Krish