2012-03-22 13 views
1

私は以下の問題を抱えています:アクティビティAをオープンしました。そこからアクティビティBを開きました。そして、アクティビティCをBから開きたいと思います。ボタンを押すと、前の(B)アクティビティに戻るのではなく、アプリケーションを終了する必要があります。私はここ(http://stackoverflow.com/questions/5794506/android-clear-the-backstack)のアイデアを使用しようとしましたが、動作しません。私は意図を扱う方法を知っている、私はバックナビゲーション問題にのみ興味がある。前のアクティビティに戻る代わりにアプリケーションを閉じる

答えて

6
次のようにあなたの活動を開始し

..

この活動に活動の

int k=1; 
      Intent i=new Intent(A.this,B.class); 
      startActivityForResult(i,k); 

この活動のBで

int j=1; 
      Intent i=new Intent(B.this,C.class); 
      startActivityForResult(i,j); 

をボタン

をバック上書きC
@Override 
public boolean onKeyDown(int keyCode, KeyEvent event) { 
if (keyCode == KeyEvent.KEYCODE_BACK) { 
    setResult(RESULT_OK, null); 
    finish(); 
} 
return super.onKeyDown(keyCode, event); 
} 

と活動Bに

protected void onActivityResult(int requestCode, int resultCode, Intent data) { 
     if (requestCode ==1) { 
      if (resultCode == RESULT_OK) { 

      setResult(RESULT_OK, null); 
     finish(); 

      } 
     } 

これを入れて、アクティビティに

protected void onActivityResult(int requestCode, int resultCode, Intent data) { 
     if (requestCode ==1) { 
      if (resultCode == RESULT_OK) { 
     finish(); 

      } 
     } 
    } 
1

アクティビティAとBの両方ともonStop()に入れてください。これにより、両方のアクティビティが終了するため、アクティビティCから戻るボタンを押すと、アプリケーションは終了します。これは、アプリケーションを終了する

System.exit(0); 

を使用することができ、あなたの問題BackPressで

public void onStop(){ 
    super.onStop(); 
    finish(); 
    } 
1

これを入れて、私はでSystem.exit(0)を呼び出すに強くお勧めします。

できることは次のとおりです。アクティビティAは、StartActivity(B)の直後にfinish()を呼び出します。同様に、BはstartActivity(C)の直後にfinish()を呼び出します。このようにして、Cがアクティブな唯一のアクティビティです。むしろ、それをスタックから削除します。

onStop()でfinish()を呼び出してはいけません。新しいアクティビティを開始するとき、またはアクティビティの処理が終了したら、finish()を呼び出します。

Btw、finish()はアクティビティを直ちに終了しません。 Finishはスタックに置かれ、現在のメソッドが終了するとすぐに実行されます。同様に、startActivityは直ちに実行されず、現在のメソッドが終了すると実行されます。

0

コードを使用してデバイスのホーム画面に入ることができます。

  Intent startMain = new Intent(Intent.ACTION_MAIN); 
      startMain.addCategory(Intent.CATEGORY_HOME); 
      startMain.setFlags(Intent.FLAG_ACTIVITY_NEW_TASK); 
      startActivity(startMain); 
関連する問題