2011-06-27 15 views
5

私のアプリケーションでは、ハードウェアを制御したいと考えていますback button。つまり、私のアプリでは、4つまたは5つの活動があります。ここでは、あるアクティビティから別のアクティビティに移動するとします。ハードウェア戻るボタンを制御する方法

私の場合は、ハードウェアの戻るボタンを押したときに、自分のアプリが終了したときに私のアプリを終了させず、最初のアクティビティ...私の質問は、ハードウェアの戻るボタンを押すとアプリが終了するようにするためです

+2

オウを、私はここにStackOverflowの上の「戻る」と「アンドロイド」を入力すると、あなたに似たヒット曲の多くを与えるだろうと思います.... – Nanne

+0

Wow-あなたが得るのですか:そして、MyControllerクラスは次のようになります。あなたの質問へのこれらの種類の応答は、答えを受け入れない? – 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

しかし、私はこのコードを書いているので、私のアプリには5つのアクティビティがあるので、このコードを書くアクティビティがあります。このコードが実行されたイベントは – AndroidDev

+1

@Anshumanです。表示されているアクティビティが何であれ、それをチェックしなければならず、そのアクティビティ内で実行されます。これを使用すると、新しいアクティビティが開始されます。 –

4

あなたが呼び出すされ、共通のクラスにメソッドを呼び出します。これは、一般的なクラス内のすべての5つの活動のインスタンスを格納し、すべての活動にonBackPressed()を追加する必要があります5つのアクティビティのそれぞれにactivity.finish()例えば

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

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

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

同様、ようにActivity2、Activity3ために書き込み、。

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

私は例を教えてください。私はアンドロイドで新しいです。私は共通のクラスで5つのアクティビティをどのようにインスタンス化するか分かりません。 – AndroidDev

+0

私はこれで私の答えを更新します。 – sparkymat

+0

OK SparkYmat..iは、あなたの提案に感謝します。 – AndroidDev

関連する問題