2017-03-05 10 views
0

私は共通の動作を実装しようとしています(私は思っています)。前のアクティビティに戻り、最初のアクティビティを返さないようにします。

私は2つのアクティビティを持っています: LoginActivityMainActityです。

MainActiviyには、RequestFragment,DetailFragmentおよびVisualizationFragmentの3つのフラグメントを含むメニューがあります。

しかし、私はまだ解決していない1つの問題があります。流れがに似ている場合、最初の1

を: LoginActivity - >MainActivity - >RequestFragment - >DetailFragment そしてまた、あなたがナビゲートすることができます LoginActivity - >MainActivity - >VisualizationFragment

しかし、一度、あなたがログインしている、ちょうど今私が使用している、流れからLoginActivityを削除:

LoginActivity

protected void onCreate(Bundle savedInstanceState) { 
    super.onCreate(savedInstanceState); 
    setContentView(R.layout.activity_login); 
    //...some extra code... 

    intent.setFlags(Intent.FLAG_ACTIVITY_NEW_TASK | Intent.FLAG_ACTIVITY_CLEAR_TASK); 
//..start the activity 

} 

[OK]を、それは大丈夫働いているが、私のMainActivityに私は問題があります。 MainActivity考慮して撮影

@Override 
    public void onBackPressed() { 
     if (getFragmentManager().getBackStackEntryCount() > 0) { 
      getFragmentManager().popBackStack(); 
     } else { 
      super.onBackPressed(); 
     } 
    } 

私は私のMainActivityは交換のメニューを持っています私の断片のためのもの、MainActivityが開いているときに私のアプリケーションを閉じることができます(当然です)。Fragmentが表示されますか?

ちょうど今、私のコードは、断片のナビゲーションを使って何をやっていない、それはMainActivityとして全てを取っていることは考慮してfragments

答えて

0

使用を取らずに開いているが、以下のようなコードをbackpressed。私はそれが最後の断片を満たしているならば警告箱を示した。

@Override 
    public void onBackPressed() { 
     if (getFragmentManager().getBackStackEntryCount() > 0) { 
      showAlertDialog(Constants.EXIT_APP, Constants.APP_NAME); 
     } else { 
      getFragmentManager().popBackStackImmediate(); 
     } 
    } 

//このメソッドを追加してナビゲートします。そうでなければ、backstackするフラグメントを追加したい場合は、設定3番目のパラメータとして真:

Classname obj = new Classname(); 
showFragment(obj,"FRAGMENT_NAME_IN_STRING",true); 

注:によってuはフラグメントのために必要な場所にこのメソッドを呼び出す//

public void showFragment(Fragment fragment, String back_stack_name, boolean save_back) { 
     FragmentTransaction transaction = getFragmentManager().beginTransaction(); 
     transaction.replace(R.id.container, fragment); 
     if(save_back) { 
      transaction.addToBackStack(back_stack_name); 
     } 
     transaction.commit(); 
    } 

共通javaファイルに書きますfalseを設定します。 クラスを呼び出すIntentと同様に、showFragmentはフラグメントを呼び出すために使用されます。

関連する問題