2015-03-19 84 views
0

我是Android新手。我有「菜單」活動,其中我有3個項目的ListView。當我點擊第一個項目時,它將打開新的活動(「播放」活動)。在那個活動中,我有一個按鈕調用另一個活動「結果」。我試圖在「結果」活動onBackPressed方法中返回到「菜單」活動。 下面是一個代碼,但是這個代碼只是返回到「播放」活動:退回到後退按鈕菜單

@Override 
public void onBackPressed() { 
    // TODO Auto-generated method stub 
    finish(); 
} 

另一個代碼只是回到「菜單」的活動,但不會關閉「結果」活動

@Override 
public void onBackPressed() { 
    // TODO Auto-generated method stub 
    Intent intent = new Intent(this , Menu.class); 
    startActivity(intent); 
} 

請給我一些想法如何處理它。 謝謝。

+0

你可以用'intent.setFlags(Intent.FLAG_ACTIVITY_NO_HISTROY)'來啓動菜單acitivty。順便說一句,你應該添加android標籤。 – chartsai 2015-03-19 02:48:42

+0

@Chatea這是一個不好的建議。它會打破標準的導航,可能不是用戶想要的。有更好的方法來做到這一點。 – 2015-03-19 12:10:08

回答

1

這樣做:

@Override 
public void onBackPressed() { 
    Intent intent = new Intent(this , Menu.class); 
    intent.addFlags(Intent.FLAG_ACTIVITY_CLEAR_TOP); 
    startActivity(intent); 
} 

這將清除出棧的所有活動,並返回到Menu活動。

+0

使用'Intent.FLAG_ACTIVITY_CLEAR_TOP'時我需要什麼'launchMode'類型?雖然我不是OP,但我需要它。謝謝。 – 2015-03-19 12:45:10

+1

@AnggrayudiH'launchMode =「singleTop」' – 2015-03-19 12:51:59

+0

您可以使用任何啓動模式。如果您使用標準啓動模式,則將完成啓動的活動的當前實例,然後創建它的新實例。如果您使用「singleTop」啓動模式,那麼它不會創建該Activity的新實例,它只會使用新的Intent調用onNewIntent()。 – 2015-03-19 15:13:25

0

首先歡迎來到android世界。你在這裏犯了兩個基本和初學者的錯誤。但是,當你擅長時,沒有問題,也不用擔心。

現在讓我們來談談你的問題。您可以通過以下方式實現此目的。

當你通過點擊按鈕從遊戲類轉換到結果類時,你應該完成這個遊戲類,以便它不應該回到棧中。

例如:

 playClassBtn.setOnClickListener(new View.OnClickListener() { 
      @Override 
      public void onClick(View v) { 
      Intent intent = new Intent(this , ResultActivity.class); 
      startActivity(intent); 

      } 
     }); 

和ResultActivity在乘坐onBackPressed方法,你做了alread