我的代码效果很好 但有时布局会重叠 该代码的原因是,不应重新加载第一个片段。 并且应该始终重新加载第二个和第三个片段
您是否曾经遇到过布局重叠代码的问题?
@Override
public boolean onNavigationItemSelected(@NonNull MenuItem menuItem)
{
Fragment selectedFragment = null;
switch (menuItem.getItemId())
{
case R.id.timer:
fm.beginTransaction().hide(active).show(fragment1).commit();
active = fragment1;
break;
case R.id.favorite:
fm.beginTransaction().hide(active).commit();
fm.beginTransaction().detach(fragment2).attach(fragment2).commit();
fm.beginTransaction().show(fragment2).commit();
active = fragment2;
break;
case R.id.calendar:
fm.beginTransaction().hide(active).commit();
fm.beginTransaction().detach(fragment3).attach(fragment3).commit();
fm.beginTransaction().show(fragment3).commit();
active = fragment3;
break;
}
return true;
}
答案 0 :(得分:0)
根据我的理解,您必须基于菜单单击来显示一个屏幕,所以为什么不使用xml中的FrameLayout并基于单击或任何事件来添加或替换片段。制作3个不同的Fragment类,并使用界面或Google提供的任何最新的arch组件。