2013-02-08 6 views
6

アプリケーションには多くのアクティビティがあり、最後に開始されたアクティビティはスタックの最上部に留まり、現在のアクティビティを終了します。アクティビティのシーケンスがあり、ここにはフローがあります。特定のアクティビティのすべてのインスタンスを完了

アプリケーションをナビゲートしながら、我々は、B、C(1)は、D、C(2) ...アクティビティC(1)、C(2)活性Cの二つの異なるインスタンスが起動された場合。それで必要なのは、アクティビティCのすべてのインスタンスをクリアすることです。結果は完了する必要があります。C(2)私はこれらのスタックを残しておくべきです。A、B、D私は何をすべきか 。

IMP -Iが、私はむしろ、これらのインスタンスを作成するよりも、新しいタスクフラグとCを開始したが、これらのことができたように私はC(2) を終了しない限りまでCスタックで生きている(1)を維持したいですインスタンスには異なるUIと作業があります。

次の方法は好ましくありません。

まず

@Override 
public void onBackPressed(){ 
    super.onBackPressed(); 
    Intent intent = new Intent(C(2).this , D.class);  
    intent.setFlags(Intent.FLAG_ACTIVITY_CLEAR_TOP)); 
    startActivity(intent); 
} 

これは、スタックからすべての活動を消去し、再起動します活動

セカンド

シングルトンクラスでの活動を追跡し、必要な流れをリニューアルどのようにこれが開始されるべき多くの活動がある時間を消費するか。

だから、私は、アクティビティC2を終えたときに、手動で活動C1を閉じるための方法を知っていない溶液を

+0

にナビゲートされますこれを行う方法? – Uma

答えて

1

を高く評価され、問題が解決されるパッケージマネージャまたは他のを使用して、いくつかの解決策があるはずと考えました。

public static boolean IsClosingActivities = false; 

をこの値は、C2によって「true」に設定することができます -

1 - アプリケーションのクラスにフラグを設定し、あなたがそれの履歴書にこの方法だで活動C1の世話をすることができますしかし

アクティビティC2の「終了」の直前に発生します。

新しいアクティビティCに対してstartActivityを呼び出すポイントに "false"を設定します(アクティビティCの新しいインスタンスをアプリケーションの後半で作成できると仮定します)。

2 - 履歴書上のC実装で:

@Override 
    protected void onResume() {  
     super.onResume(); 
     if (YourApplication.IsClosingActivities) { 
       this.finish(); 
     } 
    } 

この方法 - ユーザが戻っDから移動 - あなたが見つけましたC1は、自身を終了しますと、彼はB.

+0

私はそれを試み、あなたに知らせるでしょう。 –

+0

私は似たような状況を抱えており、それを手動で行うことが私が見つけた唯一の方法でした。あなたは答えを見ることができます:http:// stackoverflow。com/questions/14499034/how-to-finish-a-activity-and-vary-to-a-variety-location - それがうまくいく場合、答えを受け入れてください:) –

+1

うまくいきましたか?もしそうなら、答えとして記入してください。 –

関連する問題