2011-06-27 87 views
5

在我的應用程序中,我想控制硬件back button。這意味着在我的應用程序中有四五個活動。現在假設我從一個活動轉移到另一個活動。如何控制硬件後退按鈕

現在在我的情況下,當我按下硬件後退按鈕我希望我的應用程序退出任何活動,我一直在但我的應用程序時,按下此後退按鈕比它不會退出我的應用程序,直到它到達第一次活動...所以我的問題是,我該怎麼做,以便當我按下硬件後退按鈕時,它將退出我的應用程序...請建議我。

+2

嗷,我想打字「後退」和「機器人」在這裏計算器會給你很多類似的命中.... – Nanne

+0

Wow-你怎麼弄這種回答你的問題,甚至不接受答案? – IcedDante

回答

15

試試這個:

@Override 
public boolean onKeyDown(int keyCode, KeyEvent event) 
{ 
    if(keyCode == KeyEvent.KEYCODE_BACK) 
    { 
     Intent intent = new Intent(Intent.ACTION_MAIN); 
     intent.addCategory(Intent.CATEGORY_HOME); 
     intent.setFlags(Intent.FLAG_ACTIVITY_NEW_TASK); 
     startActivity(intent); 
     return true; 
    } 
return false; 
} 
+0

但我寫這個代碼意味着有五個活動在我的應用程序中,所以在哪個活動中我寫這個代碼..但是在哪個事件中執行這個代碼 – AndroidDev

+1

@Anshuman,這就是你想要在這裏。您必須在可見的Activity中檢查它,並且它將在該Activity中執行。那麼如果你使用這個,它會開始新的活動。 –

4

您將有所有5個活動的實例存儲在一個共同的類,並且在每一個活動添加onBackPressed(),它將調用在公共類的方法,它會調用activity.finish() 5個活動中的每一個。

例如:

class Activity1 extends Activity { 
    public void onCreate(Bundle savedInstanceState) { 
     super.onCreate(savedInstanceState); 

     MyController.getInstance().setActivity1(this); 
    } 

    public void onBackPressed() { 
     MyController.getInstance().closeAllActivities(); 
     super.onBackPressed(); 
    } 
} 

類似地,寫活性2,Activity3,等等。而且,類myController的是這樣的:

class MyController { 
    private static MyController instance; 
    private Activity activity1, activity2, activity3, activity4, activity5; 

    private MyController() {} 
    public static synchronized MyController getInstance() { 
     if(instance == null) { 
      instance = new MyController; 
     } 

     return instance; 
    } 

    public void setActivity1(Activity activityObject) { activity1 = activityObject; } 
    public void setActivity2(Activity activityObject) { activity2 = activityObject; } 
    public void setActivity3(Activity activityObject) { activity3 = activityObject; } 
    public void setActivity4(Activity activityObject) { activity4 = activityObject; } 
    public void setActivity5(Activity activityObject) { activity5 = activityObject; } 

    public void closeAllActivities() { 
     if(activity1 != null) { 
      activity1.finish(); 
     } 
     if(activity2 != null) { 
      activity2.finish(); 
     } 
     if(activity3 != null) { 
      activity3.finish(); 
     } 
     if(activity4 != null) { 
      activity4.finish(); 
     } 
     if(activity5 != null) { 
      activity5.finish(); 
     } 
    } 
} 
+0

你可以請示範我的例子..我是新的android.and我不知道如何實例在普通類中的所有5個活動 – AndroidDev

+0

我會更新我的答案與此。 – sparkymat

+0

好的SparkYmat ..我會在那..感謝您的建議.. – AndroidDev

相關問題