2013-03-15 4 views
6

У меня есть два вида деятельности, MainActivity и NextActivity. От MainActivity Я могу пойти в NextActivity, а затем использовать Intent, чтобы вернуться к MainActivity. Но тогда будет вызван OnCreate и другие вещи, и все будет похоже на то, что все снова инициализируется. Я хочу вернуться к состоянию, точно так же, как это было до того, как я вошел в NextActivity.Android вернуться к предыдущей деятельности

Я понял, что если я использую физическую кнопку «Назад» на моем телефоне, это достигается.

Итак, как вернуться к действию так же, как кнопка «Назад»?

PS. Я проверил finish(), но не помог.

+3

Вы действительно испытали финиш? как? вот путь – lelloman

+2

finish() - это путь. Что это значит, что это не помогло? Возможно, у вас закончилась нехватка памяти, и Android должен перестроить вашу активность? – Zielony

+0

Я не думаю, что есть гарантия, что ваша предыдущая деятельность будет по-прежнему доступна. Вам лучше сэкономить государство, используя предпочтения или какое-то хранилище в случае, если активность была собрана мусором. – Davos555

ответ

25

вы можете просто позвонить onBackPressed() вместо использования Intent, чтобы вернуться к MainActivity ..

Например:

public void onClick() { 
    onBackPressed(); 
} 

Примечание: finish() должен делать именно то, что вы хотите ..

+0

это ответ @Jonas –

4

Предположим у вас есть две операции A и B. Вы переходите от A к B. A переходит на задний план.

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

Примечание. Несколько задач могут быть выполнены в фоновом режиме сразу. Однако, если пользователь одновременно запускает множество фоновых задач, система может начать уничтожать фоновые действия, чтобы восстановить память, в результате чего состояния активности будут потеряны. См. Следующий раздел о состоянии активности.

http://developer.android.com/training/basics/activity-lifecycle/starting.html. Действия, которые были уничтожены, должны быть воссозданы. Активность разрушается и воссоздается при изменении ориентации экрана.

http://developer.android.com/training/basics/activity-lifecycle/starting.html.

http://developer.android.com/guide/components/tasks-and-back-stack.html. Вы должны посмотреть, как работает задний стек.

В вашем случае отделка должна работать для вас (нажав кнопку «Назад»).

Примечание: система вызывает onDestroy() после того, как она уже вызывала onPause() и onStop() во всех ситуациях, кроме одного: когда вы вызываете метод finish() из метода onCreate().

Предположим, что у вас есть третье мероприятие C, и вы хотите перейти к мероприятию A.

@Override 
public boolean onKeyDown(int keyCode, KeyEvent event) { 
if (keyCode == KeyEvent.KEYCODE_BACK) { 
    onBackPressed(); 

} 

return super.onKeyDown(keyCode, event); 
} 

public void onBackPressed() { 
Intent myIntent = new Intent(ActivityC.this, MainActivity.class); 
myIntent.setFlags(Intent.FLAG_ACTIVITY_CLEAR_TOP);// clear back stack 
startActivity(myIntent); 
finish(); 
return; 
} 
Смежные вопросы