2012-03-26 91 views
0

我有兩項活動。在第一次我來到了第二個活動從第一這樣:無法離開我的應用程序

Intent i = new Intent(this, SecondClass.class); 
startActivity(i); 

但是在特殊情況要求我重新啓動的第一項活動,因爲我要回到它與同樣的方式:

@Override 
    public boolean onKeyDown(int keyCode, KeyEvent event) { 
     if (keyCode == KeyEvent.KEYCODE_BACK) { 

      //... 

      Intent i = new Intent(this, FirstClass.class); 
      startActivity(i); 

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

因爲我不能離開第一項活動: 如果我使用

@Override 
    public void onBackPressed() 
    { 
     finish(); 
     System.exit(0); 
     return; 
    } 

@Override 
    public boolean onKeyDown(int keyCode, KeyEvent event) { 
    if (keyCode == KeyEvent.KEYCODE_BACK) { 

     finish(); 
      System.exit(0); 

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

它關閉我的應用程序,但打開第二個活動。 請幫忙!

回答

1

剛開始一個新的活動(並且只有在你開始一個新的活動之後)才調用finish(),讓android完成剩下的工作。

Intent i = new Intent(this, SecondClass.class); 
startActivity(i); 
finish(); 

它將開始第二個活動並關閉第一個活動。如果你現在按返回鍵它會帶你到最後開啓的活動(不一定是一個從你的應用程序)

2

當你去你的第二個活動,則關閉第一個活動是這樣

Intent i = new Intent(this, SecondClass.class); 
startActivity(i); 
finish(); // Close your first activity 

現在當你在你第二個活動,那麼你可以通過這個

@Override 
public void onBackPressed() 
{ 
    Intent i = new Intent(this, FirstClass.class); 
    startActivity(i); 
    finish(); // Close your second activity 
} 

重新啓動您的第一個活動是爲:)

+0

哇,這很完美!謝謝! – Leo 2012-03-26 18:21:47

0

一樣簡單,我認爲你不應該做T因爲Android平臺已經爲您提供了一堆活動,改變了堆棧中活動的行爲以及它們的實例,您可以使用AndroidManifest.xml來實現這一點。 Activity Launch Mode

相關問題