2016-12-16 11 views
0

A、B、C、D、E、Fのアクティビティがある場合
AはBを開き、BはCを開き、CはDを開きます。 A→B→C→D→E→Fのようになります。
現在、私はバックスタックですべてのアクティビティを開いた後、Fアクティビティにいます。

今私はAを閉じずにBの活動に行きたいが、すべての活動(C、D、E、F)を閉じる。これを行う方法を教えてください。新しいアクティビティを開いて、前のアクティビティを終了しない

+0

使用仕上げ()メソッド」をバックスタックに入れたい – Kunu

+0

'intent.setFlag(Intent.FLAG_ACTIVITY_CLEAR_TOP);を使用してください。 – Piyush

+0

この[リンクの説明をここに入力してください](http://stackoverflow.com/questions/5794506/android-clear-the-backstack) –

答えて

0

にonBackPressed方法を使用してコールBの活動は、あなたはドキュメントからIntent.FLAG_ACTIVITY_CLEAR_TOP

Intent intent - new Intent(this, B.class); 
intent.setFlag(Intent.FLAG_ACTIVITY_CLEAR_TOP); 
startActivity(intent); 

を使用する必要があります:

int型FLAG_ACTIVITY_CLEAR_TOP

設定されていて、起動中のアクティビティがすでに現在のタスクの で実行されている場合は、その アクティビティの新しいインスタンスを起動すると、その上にある他のアクティビティもすべて閉じられ、 このインテントは新しいインテントとして という古いアクティビティに配信されます。

1

これを試してください。

  1. アクティビティAは、B(活性仕上げ)
  2. アクティビティBはアクティビティCがD(完了C活性) を呼び出し
  3. B活性方法をonBackPressed使用C(完了B活性) コールAアクティビティを呼び出す呼び出しE活性の方法
  4. アクティビティEは、F(終了E活性)を呼び出しをonBackPressed使用 コールDアクティビティアクティビティDは、E(終了D活性)を呼び出し
  5. D活動方法をonBackPressed使用Cアクティビティを呼び出しますこの場合、F活動
+0

これは、すべてのクラスを閉じ、新しいBアクティビティのインスタンスを開始します。 – Kunu

+0

はい、あなたは正しいです。更新された回答を確認してください。 –

+0

ユーザーごとの要件として、単純な変更が必要です。クラスAとBをスタックしていないようにしてください。 – Kunu

0

これらの操作には、MainActivityと複数のフラグメントを使用する必要があります。

まず、フラグメント・コンテナーを作成します(基本的には、フラグメントを保持できるビューです。そのフラグメントはMainActivityからいつでも変更できます)。その後

<FrameLayout xmlns:android="http://schemas.android.com/apk/res/android" 
android:id="@+id/fragment_container" 
android:layout_width="match_parent" 
android:layout_height="match_parent" /> 


このようなあなたのMainActivityで、コンテナ内のフラグメントを変更します:

MainActivityのためのあなたのXMLのレイアウトは、あなたがドンのクラスを破壊する

// Create a new Fragment to be placed in the activity layout 
YourFragment firstFragment = new YourFragment(); 

// In case this activity was started with special instructions from an 
// Intent, pass the Intent's extras to the fragment as arguments 
firstFragment.setArguments(getIntent().getExtras()); 

// Add the fragment to the 'fragment_container' FrameLayout 
getSupportFragmentManager().beginTransaction() 
    .add(R.id.fragment_container, firstFragment).commit(); 
関連する問題