2016-08-23 4 views
0

У меня возникла странная проблема, скажем, у меня есть два вида действий: A и B, приложение начинается с Activity A, я перехожу к активности B, нажав кнопку Android Home, вернусь в приложение, которое приносит мне назад к Activity B. Затем я нажимаю кнопку «Назад» (либо аппаратное обеспечение на панели инструментов), и это закрывает приложение, но оно должно возвращать меня в Activity A. Активность B не отменяет onBackPressed и имеет активность A, указанную как PARENT_ACTIVITY в манифесте. Я начинаю с Intent без флагов. Любая идея, почему это происходит? БлагодаряАктивность в фоновом режиме убивается, когда нажата кнопка «Домой»

+1

опубликовать исходный код – Krish

ответ

1

спасибо за помощь, проблема была вызвана этим флагом для активности в манифесте андроида: launchMode = singleinstance (это не изначально мой проект, поэтому я пропустил это, я просто надеюсь, что я не винил что-то еще, удалив его)

1

В вашей активности А когда вы называете деятельность B, может быть, у вас есть следующие команды:

finish(); 

Если да, то вы должны удалить эту строку. Затем, когда вы нажимаете клавишу «Назад» из своей активности B, вы должны вернуть A. Если нет, можете попробовать поделиться своим кодом.

1

Поведение кнопок на задней панели зависит от версии системы. Существует поддержка для обеспечения навигации обратно в старых версиях 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> 

Самый лучший и самый удобный способ для отладки обратно проблемы стека, чтобы включить «Не сохранять действия '» в разработчик.

Это мое лучшее предположение. Удачи!

1

Для того, чтобы запустить новую деятельность, не разрушая старую, вы должны добавить флаг 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.