2013-08-14 29 views
7

アクティビティA→B→C→D→Eから始めます.D→Eから移動するときにはスタック内にアクティビティはないはずですが、 Dと(通常のバック関数のように、活動Cを更新せずに)Cに行くアクティビティのバックスタックを削除

答えて

17

あなたが閉じるすべてのアクティビティ(A、B、C、D)にBroadcastReceiverを追加することができます:

public class MyActivity extends Activity { 
    private FinishReceiver finishReceiver; 
    private static final String ACTION_FINISH = 
      "com.mypackage.MyActivity.ACTION_FINISH"; 

    @Override 
    protected void onCreate(Bundle savedInstanceState) { 
     super.onCreate(savedInstanceState); 

     finishReceiver= new FinishReceiver(); 
     registerReceiver(finishReceiver, new IntentFilter(ACTION_FINISH)); 
    } 

    @Override 
    protected void onDestroy() { 
     super.onDestroy(); 

     unregisterReceiver(finishReceiver); 
    } 

    private final class FinishReceiver extends BroadcastReceiver { 
     @Override 
     public void onReceive(Context context, Intent intent) { 
      if (intent.getAction().equals(ACTION_FINISH)) 
       finish(); 
     } 
    } 
} 

...と...

sendBroadcast(new Intent(ACTION_FINISH)); 

を呼び出すことによって、それらを閉じ...活動E.でthis nice exampleをあまりにも確認してください。

+0

あなたの人生保護人....ありがとうトン... – W00di

+1

:)残念ながら、この上にクローズ投票者が多すぎましたそれは前述の複製とは少し異なります。上記の解決策は大型に見えるかもしれませんが、非常に柔軟で強力です:) – Trinimon

+1

解決策をお寄せいただきありがとうございます。このケースは間違いなく異なっています。 – Roman

5

はあなたの他の活動をクリアするためにあなたの意思にFLAG_ACTIVITY_CLEAR_TOPフラグを追加あなたのようなあなたのE活動を開始している時にスタックをバック形成:

intent.addFlags(Intent.FLAG_ACTIVITY_CLEAR_TOP); 

あなたの活動を開始してください:

上の0

詳細情報:Task and BackStack

+1

アクティビティがすでにスタックに入っている場合にのみ動作します。 – W00di

+0

@sabya:plsは問題について詳しく説明しています。 –

+1

:docs: "これが設定されていて、起動されているアクティビティは、そのアクティビティの新しいインスタンスを起動する代わりに、そのアクティビティの上にある他のすべてのアクティビティが閉じられ、このインテントが(新しいアクティビティとしての)古いアクティビティに配信されます。 (http://developer.android.com/reference/android/content/Intent.htmlを参照) – Trinimon

0

が、これはスタック

ですでに活動をバッククリアする権利ワットである

Intent intent = new Intent(getApplicationContext(),MainActivity.class); 
intent.addFlags(Intent.FLAG_ACTIVITY_CLEAR_TOP | Intent.FLAG_ACTIVITY_NEW_TASK); 
startActivity(intent); 

スタック内のすべての活動を消去しますあなたのitentにフラグを追加します。これが役に立てば幸いです。

+0

どちらも働いていない... :( – W00di

関連する問題