MainActivity
とFragments
があり、ユーザーがNavigationViewer
をクリックするとWebView
が開きます。ホームビューFragment
をナビゲーションビューに追加しましたが、ユーザーがアプリケーションを開くと、デフォルトの家庭Fragment
が開くように、デフォルトにする方法がわかりません。別のJavaクラスを作成するか、MainActivity
を使用する必要がありますか。家庭としてのJava?はいの場合は、どうすればMainActivity
を使用しますか?家庭のJava Fragment
?そして、ユーザが他のFragment
をクリックしてWebView
を開き、バックボタンを押すと、それをデフォルトの家屋Fragment
に戻す方法を教えてください。現時点で、私がバックボタンを押すと、それは文字通りAppを破壊し、Phoneのバックグラウンドに戻ります。mainactivityをホームフラグメントとするには?
答えて
コンテンツを設定するフラグメントプロバイダがあるLauncher-Activityをお持ちの場合は、何らかの理由でデフォルトのフラグメントを保存することができます。
通常、アクティビティを開始し、コンテンツの一部をフラグメントに置き換えるFragmentManagerがあります。
論理に応じて動作が変化したい場合は、SharedPreferencesやSQLiteのような他の格納技術を使用して、Idなどの開始フラグメントを保存します。
私はあなたがこれに似FragmentManager
を使用してonNavigationItemSelected
にフラグメント間に変化していると仮定します。
FragmentTransaction ft = getSupportFragmentManager().beginTransaction();
ft.replace(R.id.content_frame, new HomeFragment);
ft.commit();
あなたが活動を開始したときにフラグメントを開きたい場合は、何をする必要がすることは、あなたが何をするかにまったく同じですバックbのよう
navigationView.setCheckedItem(R.id.home_fragment);
:onNavigationItemSelected
に、あなたが選択したNavigationView
の項目onCreate
にFragmentManager
に電話しても確認する必要がありますutton、あなたはonBackPressed
関数を無効にする必要があります。あなたは、Android Studioからナビゲーションドロワーのテンプレートを使用している場合、それは次のようになります。あなたは、単に他の部分にあなたのロジックを追加することができます
@Override
public void onBackPressed() {
DrawerLayout drawer = (DrawerLayout) findViewById(R.id.drawer_layout);
if (drawer.isDrawerOpen(GravityCompat.START)) {
drawer.closeDrawer(GravityCompat.START);
} else {
super.onBackPressed();
}
}
、あなたはFragmentManagerから見/それへの参照を保持することによって、活性フラグメントを追跡することができます(またはナビゲーションドロワーの選択した項目を見て)と、それに応じて動作させる:
Fragment currentFragment = getSupportFragmentManager().findFragmentById(R.id.content_frame)
if(currentFragment instanceof HomeFragment)
super.onBackPressed();
else {
FragmentTransaction ft = getSupportFragmentManager().beginTransaction();
ft.replace(R.id.content_frame, new HomeFragment);
ft.commit();
}
まずFragment
が含まれていますあなたのMainActivity
Layout
に「コンテナ」のいくつかの種類を設定します。
はその後FragmentManager
とFragmentTransaction
を設定します。
private FragmentManager fragmentManager = getFragmentManager();
private FragmentTransaction fragmentTransaction = fragmentManager.beginTransaction();
あなたonCreate()
方法でメインFragment
で起動したい場合は 以下のコードを追加しますことを忘れないでください
fragmentTransaction.add(R.id.container, new MainFragment(), *"set Tag for your fragment"*);
をフラグメントをBackStackに追加します。
ragmentTransaction.addToBackStack(*"Your Fragment Tag"*)
以下の私のコード例を見てみましょう:あなたはonBackPressed()
方法を@Override
しなければならないbackbutton
について
/**
* A fragment transaction Method
*
* @param fragment the fragment we want to display
*/
private void setFragmentTransaction(Fragment fragment, MainMenus tagName) {
fragmentManager = getFragmentManager();
fragmentTransaction = fragmentManager.beginTransaction();
//replacing fragments new Fragments
if (fragment != null) {
fragmentTransaction.replace(R.id.container, fragment, tagName.toString());
} else if (fragment == null && (fragmentManager.getBackStackEntryCount() == 0)) { // starting with main Fragment
fragmentTransaction.add(R.id.container, new MainFragment(), MainMenus.MAIN_MENUS.toString());
}
if (tagName == null) {
fragmentTransaction.addToBackStack(null);
} else {
fragmentTransaction.addToBackStack(tagName.toString());
}
fragmentTransaction.commitAllowingStateLoss();
fragmentManager.executePendingTransactions();
}
を。それが特定のフラグメントの数に達したとき、あなたはFragment's TAG
たりすることができますpopBackStack()
を使用してbackPressを扱うことができます。
@Override
public void onBackPressed() {
//The first method, using TAG
if (fragmentManager.findFragmentByTag(* "Your Fragment TAG" *.toString()) !=null){
fragmentManager.popBackStack()
}
//The second method: if more than two fragment, delete fragment stack
if (fragmentManager.getBackStackEntryCount() > 3) {
fragmentManager.popBackStack();
}
super.onBackPressed();
}
: 以下の例を見てみましょう
- 1. MainActivityとなる活動は?
- 2. MainActivityを断片化し、戻るボタンを押したときにMainActivityに戻る
- 3. 方法は、Androidプロジェクト、ViewPagerと3つの断片と MainActivityでMainActivity
- 4. はMainActivity
- 5. フラグメントをMainActivityにリッスンする方法は?
- 6. MainActivityは私MainActivityが呼び出される前に
- 7. MainActivityとライブ壁紙
- 8. NavigationDrawerを使用して戻るボタンを押したときに、ホームフラグメントにまっすぐに移動
- 9. MainActivityをクラスに編成する
- 10. MainActivity Android Appに戻る
- 11. MainActivityとフラグメント間の通信
- 12. MainActivity NoClassDefFoundError
- 13. MainActivityが終了したときにLocalBroadcastManagerを使用するAndroid
- 14. MainActivityの代わりに通知をクリックすると
- 15. フラグメントをMainActivityに移動
- 16. 重複するクラス:MainActivity
- 17. アンドロイドの空のMainActivityにボタンを追加することはできますか?
- 18. MainActivityに関するIntentServiceのライフサイクル
- 19. MainActivityに単一のフラグメントがあるとしますか?
- 20. MainActivityからFragmentPageのlistViewを更新するには
- 21. Android - MainActivityからカスタムDialogPreferenceを起動するには?
- 22. AsyncTaskクラスメソッドからMainActivityに文字列をフェッチする方法は?
- 23. MainActivity Androidの別のクラスでmQueueを使用するには?
- 24. MainActivityとは別のアクティビティを開始します
- 25. MainActivityのMainPage.xamlボタン
- 26. MainActivityがleakcanary
- 27. MainActivity for Cordovaアプリ
- 28. Xamarinアンドロイド - MainActivity
- 29. android MainActivityのツールバービュー
- 30. 私は、Android Studioでコードを書いたとき、私はMainActivityなしgetAssetsを使用することができなかった、MainActivity