私は最初のアンドロイドアプリケーションを作成しています。必要な宿題をした後、私はここに助けをもたらす。同じ断片を何度も何度も置き換えるのを避けるには?
フラグメントAは、ナビゲーション・ドロワーから呼び出すことができます。もう一度Navigation Barをスライドさせ、フラグメントAを呼び出すと、そのオーバーラップしているフラグメントAを破棄します。問題はユーザーがホーム画面に戻るために2度クリックする必要があることです。
少数のスクリーンショットとスニペットを共有しています。
Help_FragmentはすでにfindFragmentByTagを使用して存在している場合は、代わりに(チェックすることができフラグメントA(Help_Fragment())
private void createHelp() {
FragmentTransaction fragmentTransaction = getFragmentManager().beginTransaction();
Log.d(taglaunch, "Switching to Help Fragment");
Fragment fragment = new Help_Fragment();
fragmentTransaction.setCustomAnimations(R.animator.slide_in_left,
R.animator.slide_out_right, R.animator.exit_to_left, R.animator.exit_to_right);
fragmentTransaction.replace(R.id.app_bar, fragment).addToBackStack(null).commit();
}
のonCreate
protected void onCreate(Bundle savedInstanceState) {
Log.d(taglaunch, "on Create - AppDrawer");
super.onCreate(savedInstanceState);
setContentView(R.layout.activity_appdrawer);
mainActivityAdapter = new MainActivityAdapter(getFragmentManager());
navigate();
switchtofragment();
getFragmentManager().addOnBackStackChangedListener(backStackListener);
}
public void switchtofragment() {
tabLayout = (TabLayout) findViewById(R.id.tab_layout);
tabLayout.addTab(tabLayout.newTab().setText("TAB1"));
tabLayout.addTab(tabLayout.newTab().setText("TAB2"));
viewPager = (ViewPager) findViewById(R.id.view_pager);
viewPager.setAdapter(mainActivityAdapter);
tabLayout.setOnTabSelectedListener(this);
tabLayout.setupWithViewPager(viewPager);
}
public void navigate() {
toolbar = (Toolbar) findViewById(R.id.toolbar);
setSupportActionBar(toolbar);
getSupportActionBar().setDisplayHomeAsUpEnabled(true);
drawer = (DrawerLayout) findViewById(R.id.drawer_layout);
toggle = new ActionBarDrawerToggle(this, drawer, toolbar, R.string.navigation_drawer_open, R.string.navigation_drawer_close);
drawer.setDrawerListener(toggle);
toggle.syncState();
NavigationView navigationView = (NavigationView) findViewById(R.id.nav_view);
navigationView.setNavigationItemSelectedListener(this);
}
は、現在表示されたフラグメントは、同じタイプである場合は、「置換」フラグメント、およびという現在の断片(表示)あなたはcreateHelp 'でこのチェックを(行うことができます)'または他の方法であります表示されているもの、ちょうど 'return;' – Yazan
私はあなたがここで答えを見つけることができると思います:http://stackoverflow.com/a/38475373/3436343 – Daniel
@ Yazanは助けてくれてありがとう:) – Mona