2012-11-28 36 views
0

在我的android應用程序中,我更改了後退按鈕的功能,以便它進入我的遊戲的主屏幕,現在它已經在主屏幕上,我應該如何使用後退按鈕退出整個應用程序?android:我怎麼才能退出應用程序?

public boolean onKeyDown(int keyCode, KeyEvent event) { 
    if (keyCode == KeyEvent.KEYCODE_BACK) { 
      Assets.getInstance().getClick().play(1); 
      this.clearScreenStack(); 
      this.setScreen(new MainMenuScreen(this)); 
     return true; 
    } 

    return super.onKeyDown(keyCode, event); 
} 

回答

1

Android的設計並不傾向於選擇退出應用程序,而是由操作系統來管理它。您可以通過其相應的意圖打開主頁應用:

Intent intent = new Intent(Intent.ACTION_MAIN); 
intent.addCategory(Intent.CATEGORY_HOME); 
intent.setFlags(Intent.FLAG_ACTIVITY_NEW_TASK); 
startActivity(intent); 

檢查How to exit from the application and show the home screen?

0

谷歌不鼓勵退出按鈕,你應該讓操作系統處理它。

給這個一讀: Is quitting an application frowned upon?

我不能幫助,如果你真的想退出,雖然,但我想我會提到這一點。

+0

您是否閱讀過該問題? OP詢問如何使用後退按鈕退出應用程序(這是Android的股票行爲),而不是執行退出按鈕。 – FoamyGuy

+0

OP需要後退按鈕上的退出按鈕功能。基本上是一樣的。 – user1810737

+0

,但後退按鈕的默認行爲是調用堆棧頂部Activity中的finish()......他只是試圖弄清楚如何在主屏幕顯示時使其具有默認行爲。 – FoamyGuy

0

您還可以檢查用戶是否進入了後退按鈕兩次。

boolean backPressed = false; 
    public boolean onKeyDown(int keyCode, KeyEvent event) { 
    if (keyCode == KeyEvent.KEYCODE_BACK && !backPressed) { 
      Assets.getInstance().getClick().play(1); 
      this.clearScreenStack(); 
      this.setScreen(new MainMenuScreen(this)); 
      backPressed = true; 
     return true; 
    } 

    backPressed = false; 
    return super.onKeyDown(keyCode, event); 
} 
1

如果你有,你可以用它來查看哪些屏幕是顯示你可以做一些這樣的機制:

public boolean onKeyDown(int keyCode, KeyEvent event) { 
    if (keyCode == KeyEvent.KEYCODE_BACK) { 
     if(mainScreenIsShowing == true){ 
      //If the main screen is showing let the back button 
      //have its default behavior. 
      return super.onKeyDown(keyCode, event); 
     }else{ 
      Assets.getInstance().getClick().play(1); 
      this.clearScreenStack(); 
      this.setScreen(new MainMenuScreen(this)); 
      return true; 
     } 

    } 
    return super.onKeyDown(keyCode, event); 
} 
0

這是一個商榷課題,但我認爲沒有錯或與應用程序在按下後退按鈕時退出。畢竟,調用finish()是後退按鈕的默認行爲。如果處理主屏幕的活動位於活動堆棧的底部,則對finish()的調用將退出應用程序。

我建議如下:讓您的MainMenuScreen在單獨的活動MainMenuActivity中處理,這是主要活動。在返回MainMenuActivity時完成()其他活動,並在MainMenuActivity中處理onKeyDown,如下所示:

public boolean onKeyDown(int keyCode, KeyEvent event) { 
    if (keyCode == KeyEvent.KEYCODE_BACK) { 
     this.finish() 
    } 
} 
+0

或者只是不要重寫和使用默認行爲,這是相同的... –

相關問題