2013-08-20 85 views
37

是否有可能重寫onBackPressed()只有一個活動?Android覆蓋onBackPressed()

關於返回按鈕單擊我想調用特定活動的對話框,但在所有其他活動中,我希望它能像以前一樣工作(轉到以前的活動)。 。 。

謝謝您提前給您的服務員。

EDITED

謝謝大家對你的anwsers,我已經一切都像你告訴我,但我的問題是,當我點擊後退按鈕上的其他活動,我要我的以前的活動(我認爲這是行不通的,我認爲這是重寫onBackPressed()在整個應用程序中,現在我明白了:D

+0

[參考這裏(HTTP://計算器。com/a/3142471/2345913) – CRUSADER

+1

刷新此頁面以將「查看」計數提高到50,000 – suku

回答

107

是的。只有

@Override 
public void onBackPressed() 
{ 
    // code here to show dialog 
    super.onBackPressed(); // optional depending on your needs 
} 

覆蓋它在一個Activity不要把這個代碼在任何其他Activity

+1

上面的代碼如何在分段中工作?這是任何解決方案 –

+0

你好我有一個相同的問題我的活動2正在進行的活動1,但我不想去活動1,如果我點擊活動2我的應用程序應退出。我怎樣才能做到這一點 ? –

+0

@Tabishkhan在開始活動2的意圖後,在活動1上調用'finish()'。然後,活動2將是堆棧中唯一的一個 – codeMagic

2

只需在您的活動中調用onBackPressed()方法想要顯示對話框並在其中顯示對話框。

31

覆蓋的onBackPressed()方法按照由codeMagic的例子,如果你不刪除調用super.onBackPressed();想要執行默認操作(完成當前活動)。控制音樂

+12

+1,用於解釋super.onBackPressed – erdomester

0

最好的和最通用的方法是建立在你重寫startActivity(Intent intent)母親活動 - 在它你把shouldPlay=true, 和onBackPressed() - 在它你把shouldPlay = trueonStop - 在其中,您將條件mediaPlayer.stop與shouldPlay作爲條件

然後,只需將母活動擴展到所有其他活動,並且不需要重複代碼。

4

您可能只需要調用onBackPressed(),如果你想要一些活動,以後退按鈕後,顯示你有提到

Intent intent = new Intent(ResetPinActivity.this, MenuActivity.class); 
    startActivity(intent); 
    finish(); 

爲我工作。

0

首先,你必須考慮,如果你的活動我把它叫做一個擴展另一個活動(B),並在兩者的

要使用onbackpressed功能他們,那麼你每次在B的代碼在A上運行了。所以如果你想分開這些,你應該分開它們。這意味着A不應該延長B,那麼你可以分別爲他們每個人進行onbackpressed。

0

試一試它的工作

@Override 
public void onBackPressed(){ 
     super.onBackPressed(); 
     Intent i=new Intent(Intent.ACTION_MAIN); 
     i.addFlags(Intent.FLAG_ACTIVITY_CLEAR_TOP); 
     i.addFlags(Intent.FLAG_ACTIVITY_NEW_TASK); 
     finish(); 
} 
0

只需使用下面的代碼初始化場

private int count = 0; 
    @Override 
public void onBackPressed() { 
    count++; 
    if (count >=1) { 
     /* If count is greater than 1 ,you can either move to the next 
     activity or just quit. */ 
     Intent intent = new Intent(ResetActivity.this, LoginActivity.class); 
     startActivity(intent); 
     finish(); 
     overridePendingTransition 
     (R.anim.push_left_in, R.anim.push_left_out); 
     /* Quitting */ 
     finishAffinity(); 
    } else { 
     Toast.makeText(this, "Press back again to Leave!", Toast.LENGTH_SHORT).show(); 

     // resetting the counter in 2s 
     Handler handler = new Handler(); 
     handler.postDelayed(new Runnable() { 
      @Override 
      public void run() { 
       count = 0; 
      } 
     }, 2000); 
    } 
    super.onBackPressed(); 
}