2011-06-27 22 views
5

W mojej aplikacji chcę sterować sprzętem back button. Oznacza to, że w mojej aplikacji jest cztery lub pięć działań. Teraz przypuśćmy, że przejdę od jednej czynności do drugiej.Jak kontrolować przycisk powrotu sprzętu?

Teraz w moim przypadku, gdy naciskam przycisk powrotu sprzętu, chcę, aby moja aplikacja wychodziła z dowolnego działania, w którym byłem, ale w mojej aplikacji, gdy naciśnie ten przycisk Wstecz, niż nie opuszcza mojej aplikacji, dopóki nie osiągnie pierwsza czynność ... więc moje pytanie brzmi, co mam zrobić, aby po naciśnięciu przycisku powrotu sprzętu moja aplikacja zniknie ... proszę, zasugeruj mi.

+2

OW i myślę, wpisując „wstecz” i „android” tutaj na StackOverflow daje dużo podobnych hitów .... – Nanne

+0

Wow jak masz tego rodzaju odpowiedzi na twoje pytanie, a nawet nie przyjmują odpowiedzi? – IcedDante

Odpowiedz

15

Spróbuj tego:

@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

ale gdzie piszę ten kod oznacza, że ​​w mojej aplikacji jest pięć aktywności, więc w którym ćwiczeniu piszę ten kod..możesz w którym zdarzeniu ten kod zostanie wykonany – AndroidDev

+1

@Anshuman, to jest to, czego chcesz właśnie tutaj. Będziesz musiał sprawdzić, czy jest widoczna aktywność, i zostanie wykonana w ramach tego działania. Jeśli użyjesz tego, rozpocznie się nowa aktywność. –

4

Będziesz musiał przechowywać wystąpień wszystkich 5 Działania we wspólnej klasy i dodać onBackPressed() w każdej działalności, która będzie wywoływać metodę na wspólnym klasy, która będzie wywoływać activity.finish() na każdym z 5 działań.

Na przykład:

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

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

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

Podobnie pisać dla Activity2, Activity3, i tak dalej. I MyController klasa będzie wyglądać następująco:

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

Czy możesz mi pokazać z przykładami .. Jestem nowy w Androidzie..i nie wiem jak umieścić wszystkie 5 działań we wspólnej klasie – AndroidDev

+0

Będę aktualizować moją odpowiedź z tym. – sparkymat

+0

OK SparkYmat..i będzie działać na to .. dzięki za sugestię .. – AndroidDev

Powiązane problemy