Android Studio导航抽屉片段重叠

韦丹:

我已经将导航抽屉活动添加到我的项目中,并且试图将项目添加为片段。这是我在主要活动中所做的。

fragmentManager = getSupportFragmentManager();
        fragmentTransaction = fragmentManager.beginTransaction();
        fragmentTransaction.add(R.id.nav_host_fragment, new HomeFragment());
        fragmentTransaction.commit();

        navigationView.setNavigationItemSelectedListener(new NavigationView.OnNavigationItemSelectedListener() {
            @Override
           public boolean onNavigationItemSelected(@NonNull MenuItem item)
            {
                DrawerLayout drawer = (DrawerLayout) findViewById(R.id.drawer_layout);
                drawer.closeDrawer(GravityCompat.START);
                int id = item.getItemId();
                if (id == R.id.nav_home)
                {
                    fragmentManager = getSupportFragmentManager();
                    fragmentTransaction = fragmentManager.beginTransaction();
                    fragmentTransaction.replace(R.id.nav_host_fragment, new HomeFragment());
                    fragmentTransaction.commit();

                }
                else if(id == R.id.Shopping_list)
                {
                    fragmentManager = getSupportFragmentManager();
                    fragmentTransaction = fragmentManager.beginTransaction();
                    fragmentTransaction.replace(R.id.nav_host_fragment, new ShoppingListFragment());
                    fragmentTransaction.commit();
                }
                else if(id == R.id.nav_Language)
                {
                    fragmentManager = getSupportFragmentManager();
                    fragmentTransaction = fragmentManager.beginTransaction();
                    fragmentTransaction.replace(R.id.nav_host_fragment, new FragmentLang());
                    fragmentTransaction.commit();
                }

默认片段是Home,它工作正常,但是可以预期,其他片段与Home Fragment重叠。(HomeFragment是唯一运行良好的工具)。我在每个Fragment类中都做了这样的事情:

public class ShoppingListFragment extends Fragment{
public View onCreateView(LayoutInflater inflater, ViewGroup container, Bundle savedInstanceState){
   View view = inflater.inflate(R.layout.fragment_shopping_list, container,false);
   return view;
    }

}

我看不出错误在哪里!一切看起来不错,但所有其他片段都显示在HomeFragment上。

你能帮忙吗?

Himani Tank:

片段管理器维护所有先前被替换的片段的堆栈,有时反向堆栈片段与我们替换的片段重叠,添加此行

fragmentManager.popBackStack(); 

像这样,

fragmentManager = getSupportFragmentManager();
fragmentTransaction = fragmentManager.beginTransaction();
fragmentTransaction.replace(R.id.nav_host_fragment, new HomeFragment());
fragmentManager.popBackStack();
fragmentTransaction.commit();

        

希望会有所帮助。快乐的编码:)

本文收集自互联网,转载请注明来源。

如有侵权,请联系 [email protected] 删除。

编辑于
0

我来说两句

0 条评论
登录 后参与评论

相关文章