2016-08-12 53 views
1

我有這樣的活動流程如何從Android應用程序退出,即使當前的活動是不是主要活動

HomeActivity>活動1>活性2> Activity3> HomeActivity

我按取消切換回直接從Activity3到HomeActivity Activity3上的按鈕。

但是當我按下HomeActivity上的按鈕時我想退出應用程序,但它使我回到Activity3 ...如何退出應用程序?這是我的家庭活動代碼 :

@Override 
    public void onBackPressed() { 
      finish(); 
      System.exit(1); 
     } 

如果我按後退按鈕時,應用程序只是開始HomeActivity它正常工作時,關閉應用程序...

如何使當我瀏覽它的工作通過所有這些其他活動?

回答

1

您應該Activity3切換到HomeActivity這樣:

Intent launchNextActivity = new Intent(Activity3.this, HomeActivity.class); 
launchNextActivity.addFlags(Intent.FLAG_ACTIVITY_NEW_TASK); 
launchNextActivity.addFlags(Intent.FLAG_ACTIVITY_CLEAR_TASK);     
launchNextActivity.addFlags(Intent.FLAG_ACTIVITY_NO_ANIMATION); 
startActivity(launchNextActivity); 

然後onBackPressed()應該正常工作。

+0

它工作的很好! –

+0

不錯!那麼請將答案標記爲已接受;-) –

1

首先要注意的是,當通過活動導航創建一堆活動時,這就是爲什麼只需調用finish()就完成了HomeActivity,然後android獲取堆棧中的前一個活動,即Activity 3並將其放入在屏幕上。

我這樣做:

1)打電話給你HomeActivity,從Activity3如下:

Intent intent = new Intent(this, HomeActivity.class); 
intent.setFlags(Intent.FLAG_ACTIVITY_CLEAR_TOP); 
intent.putExtra("Exit", true); 
startActivity(intent); 
finish(); 

這會打電話給你HomeActivity並從堆棧

2)清除所有活動在主頁活動OnCreate()增加:

if(getIntent().getBooleanExtra("Exit", false)){ 
    finish(); 
} 

希望這是有幫助的!如果代碼不起作用或者我誤解了這個問題,請不要懷疑評論。

+0

很好的解釋,謝謝分享! –

0

嘗試撥打 finishAffinity();在HomeAactivity的onBackPressed()中。

相關問題