2015-02-07 101 views
0

我正在做一個電子遊戲。我希望應用程序有3個屏幕。演示屏幕,播放屏幕和結束屏幕。如何打開一個新的活動而不打開最後一個?

我知道一個活動可以以一個意圖開始,但我的問題是這樣做,最後一個活動將被堆疊,允許用戶回到以前的活動(或屏幕)。

有沒有辦法避免這種情況?

+0

不,它不會,如果你在startActivity()之後調用** finish()**。那麼當前的活動將會完成。 – Melquiades 2015-02-07 23:02:04

+0

[刪除歷史堆棧中的活動]可能的重複(http://stackoverflow.com/questions/1898886/removing-an-activity-from-the-history-stack) – motoDrizzt 2015-02-07 23:05:42

+0

什麼是真正的問題? – deadfish 2015-02-07 23:19:10

回答

2

在要關閉的活動中使用finish()方法。

1

雖然其他人已經介紹過,如果您不希望用戶能夠返回該活動,可以簡單地調用finish()方法關閉活動,但還有一個問題希望快速回覆。

Android Design Principles,或更具體地說Navigation Principles告訴我們,我們不應該過多地使用後退按鈕的默認行爲。引導的直接引用;

一致的導航是整個用戶體驗的重要組成部分。幾乎沒有什麼東西比基本導航更令用戶感到沮喪,它們以不一致和意想不到的方式行事。

因此,不要阻止您的用戶能夠返回到輸入屏幕,而應考慮通知您的用戶他們將要離開遊戲的提示。這樣,後退按鈕就可以繼續按照他們的預期工作,並且用戶不會突然從遊戲中放棄。您可以像這樣覆蓋後退按鈕;

@Override 
public void onBackPressed() { 
    AlertDialog.Builder alert = new AlertDialog.Builder(this); 
    alert.setTitle("Leaving the Game"); 
    alert.setMessage("Do you want to leave the game? You might lose your progress."); 
    alert.setPositiveButton("Yes", new DialogInterface.OnClickListener() { 
     public void onClick(DialogInterface dialog, int whichButton) { 
      YourActivity.this.finish(); 
     } 
    }); 
    alert.setNegativeButton("Cancel", null); 
    alert.show(); 
} 

此外,作爲一個說明,如果你選擇簡單地使用finish()關閉以前Activity,返回按鈕,然後會刪除該用戶退出應用,完全是因爲沒有Activity回去。

相關問題