2013-04-30 3 views
0

Я новичок в android для разработки. У меня проблема, когда я нажимаю кнопку.Назад кнопка Навигация в Android

Если я использую финиш, этот конкретный вид будет уничтожен. В следующий раз, когда я нажму кнопку «Назад», приложение закончится. мне нужна контролируемая навигация с задней кнопкой

, например, это моя деятельность A, B, C, D

моего поток должен быть

от активности А до В с С до D до А

и пользователь может перемещаться между D к A

но когда пользователь переходит от D до а

снова, если он нажимает кнопку назад

он не должен перемещаться в любой другой деятельности

Пожалуйста, помогите

ответ

0

Я вы хотите деятельность, чтобы сохранить свое состояние на спине прессы просто не вызываем метод отделки() перед началом другая деятельность сверху. Android будет заботиться о принятии к предыдущей деятельности, когда вы будете нажимать кнопку назад, учитывая, что нет записи android:noHistory="true" в файле манифеста

0

Просто переопределить

@Override 
    public void onBackPressed() { 
     super.onBackPressed();//comment this if you want to implement your own logic 
     //Do whatever you like 
    } 

на ваших поглощения и начать D Мероприятия.

0

В D переопределение onBackPress

@Override 
public void onBackPressed() 
{ 
    super.onBackPressed(); 
    Intent i = new Intent(this, A.class); 
    i.setFlags(Intent.FLAG_ACTIVITY_CLEAR_TOP); 
    startActivity(i); 
} 
1

Вы хотите, чтобы перейти к деятельности A от D. Таким образом, вы можете вызвать активность A из D, как показано ниже,

Intent intent = new Intent(this, A.class); 
intent.setFlags(Intent.FLAG_ACTIVITY_CLEAR_TOP); //clears B and C from stack. 
startActivity(intent); 
0

Попробуйте Просто введите этот в деятельности То же, что и она, Ничего не меняется

@Override public void onBackPressed() {

} 
0

Всякий раз, когда действие вызывается из другого действия, вызывающая деятельность переходит в стек в соответствии с жизненным циклом активности. Когда вы переходите от A к B, A записывается в стек и B открывается. Вы хотите пойти (от A до B от C до D к A), (от D до A или наоборот), но не от B до A или C до B или D до C или от A до D, когда вы нажимаете кнопку.

Когда вы вызываете активность C из B, также вызывайте finish(), чтобы уничтожить B и аналогично, когда вы вызываете D из C, чтобы уничтожить C, чтобы вы не могли вернуться назад. Это ограничит ваш поток.

класс А расширяет активность {

// Нажатие кнопки

Intent intent=new Intent(A.this,B.class); 
startactivity(intent); 

}

класс B расширяет активность {

// Нажатие кнопки

Intent intent=new Intent(B.this,C.class); 
startactivity(intent); 
finish(); 

}

Класс C расширяет активность {

// Нажатие кнопки

Intent intent=new Intent(C.this,D.class); 
startactivity(intent); 
finish(); 

}

класс D расширяет активность {

// Нажатие кнопки

Intent intent=new Intent(D.this,A.class); 
startactivity(intent); 

}

Таким образом, если вы переходите от A до B -> A, в стеке, B - C -> B уничтожается (с использованием финиша), C ​​- D -> C уничтожается, и вы можете идти непосредственно от D до A с помощью кнопки «Назад». Если вы снова нажмете кнопку «Назад» после перехода от D к A, она вернется к D, и снова нажмите, чтобы она вернулась к A (первая активность запущена), а затем после повторного нажатия приложение закончится.