【发布时间】:2015-12-05 20:50:28
【问题描述】:
所以这是我在下图中的navigationDrawer 有菜单项,每个项目都添加一个片段并加载它自己的数据,所以如何防止在加载后重新添加片段,它是重新添加片段和我不想要那个。
这是我尝试过的:
@Override
public boolean onNavigationItemSelected(MenuItem menuItem) {
menuItem.setChecked(true);
if (menuItem.getItemId() == R.id.nav_home) {
makeTransaction(new Home(), "home_fragment");
toolbarTitle.setText("Home");
} else if (menuItem.getItemId() == R.id.nav_prizes) {
makeTransaction(new Prizes(), "prizes_fragment");
toolbarTitle.setText("Prizes");
} else if (menuItem.getItemId() == R.id.nav_myAccount) {
mDrawerLayout.closeDrawer(GravityCompat.START);
startActivity(new Intent(MainActivity.this, MyAccount.class));
} else if (menuItem.getItemId() == R.id.nav_contact_us) {
makeTransaction(new ContactUs(), "contactUs_fragment");
toolbarTitle.setText("Contact Us");
} else if (menuItem.getItemId() == R.id.nav_about_us) {
makeTransaction(new AboutUs(), "aboutUs_fragment");
toolbarTitle.setText("About Us");
} else if (menuItem.getItemId() == R.id.nav_share) {
mDrawerLayout.closeDrawer(GravityCompat.START);
}
return false;
}
public void makeTransaction(Fragment fragment, String tag) {
FragmentTransaction transaction = getFragmentManager().beginTransaction();
Fragment test = getFragmentManager().findFragmentByTag(tag);
getFragmentManager().executePendingTransactions();
if (test != null && test.isVisible()) {
mDrawerLayout.closeDrawer(GravityCompat.START);
} else if (test != null && test.isAdded()) {
getFragmentManager().popBackStack(tag,0);
} else {
mDrawerLayout.closeDrawer(GravityCompat.START);
transaction.setCustomAnimations(R.anim.enter_from_left,
R.anim.exit_to_right, 0, 0);
transaction.add(R.id.fragment_container, fragment, tag);
transaction.addToBackStack(tag);
transaction.commit();
}
}
【问题讨论】:
标签: android android-fragments transactions fragment android-fragmentactivity