2011-11-24 178 views
2

嗨我在我的應用程序中進行了修改,即在單擊後退按鈕後關閉我的應用程序。這聽起來很普遍嗎?但這是我的應用程序發生的事情。我有3個屏幕:開始頁面,遊戲頁面和樂譜頁面。按下開始頁面上的開始按鈕後,它將啓動遊戲頁面意圖。完成遊戲後,遊戲頁面會然後將意圖轉化爲得分頁面,當後退按鈕從積分頁壓,意圖將在起始頁這樣過去了:按下後退按鈕時的Android關閉應用程序

  1. 啓動頁面 - >遊戲第
  2. 遊戲頁面 - >分數頁
  3. 分數頁(當按下後退按鈕) - >起始頁

現在我去後回到起始頁面,當我再次按下,而不是後退按鈕退出應用程序,它會回到分數頁,如果我按了回來,但是噸它會再次進入開始頁面,形成一個無限循環。我把這個代碼,我開始頁,但它並沒有解決我的問題:

@Override 
public void onBackPressed() { 
    Startup.this.finish(); 
} 

我需要改變我的意圖的流量或有這一個可能的解決方案?

回答

8

或者你可以從分數頁面調用啓動頁面時,只需使用標誌Intent.FLAG_ACTIVITY_CLEAR_TOP。

Intent intent = new Intent(this, StartActivity.class) 
intent.setFlags(Intent.FLAG_ACTIVITY_CLEAR_TOP); 
+0

這是我的一個。謝謝! :) – KaHeL

2

剛剛推出比分活動之前增加你的遊戲頁面

//just after your startActivity(scoreIntent) 
this.finish(); 

在這個片段中,這將完成的遊戲活動。 現在,當你想要結束分數活動時,不要啓動一個新的開始活動的意圖,而只是結束你的分數活動(這意味着,將壓倒性的回調保留在其默認設置下)

這是有效的,因爲如果你在自然結束時關閉遊戲活動,堆棧中第二個最頂端的活動將成爲第一個活動,這樣您可以結束最上面的活動(得分1)來檢索起始頁面。如果您添加另一個頁面(例如start-game-gameover-score),您需要在每個非外部活動中複製此行爲(在前面的示例中,在遊戲和gameover頁面中)

+0

哦我明白了,只是說我的活動並不會在我點擊後退按鈕後立即結束?感謝您的回答,這是我第一次在我的活動中添加意圖,這就是爲什麼我不熟悉它。 – KaHeL

+0

我編輯了我的答案,請再讀一遍:) –

1

在起始頁當startActivity的遊戲頁面執行以下操作

startActivity(intent);//intent for GamePage 
    finish(); 

在遊戲頁面時startActivity的分數頁面請在分數頁面按下後退按鈕時,以下

startActivity(intent);//intent for Score Page 
    finish(); 

做以下

startActivity(intent);//intent for StartPage 
    finish(); 
+0

謝謝,我現在明白了。 – KaHeL

+1

這將導致Star​​tPage活動在每個應用程序循環中被銷燬並重新創建(毫無意義)。 –

+0

如果他想從ScorePage – Rasel

1

每當您用新的意圖調用新的活動,然後寫

finish(); 

之後startActivity()

當您調用新的活動時,請在編寫finish()後檢查。

另一個選項。 寫launchmode在manifest文件中的這些活動調用一次

清單文件 - ><activity android:name="Main" android:launchMode="singleTask" />

+0

去StartPage這個人救了我男人!謝謝,我需要避免有人通過登錄活動,當我按下「後退按鈕」,它會把他們帶到主要(登錄)活動大聲笑。謝謝! – msqar

相關問題