Java 第一次选择时,片段“覆盖”另一个片段
我使用底部导航在3个片段之间切换:ConnectFragment、DashboardFragment和ChatFragment 从“连接”切换到“聊天”或从“聊天”切换到“聊天”都可以正常工作,但当我选择“Dashboard”时,它会导致一个错误,在导航中选择“聊天”时会出现“Dashboard”,这是什么原因造成的 所有3个片段都有相同的功能和布局,所以我认为问题在于MainActivity 主要活动: 公共类MainActivity扩展AppCompatActivity实现DashboardFragment.FragmentDashListener、ChatFragment.FragmentChatListener、ConnectFragment.FragmentConnStener{ FragmentManager fm=getSupportFragmentManager; 片段活性; Fragment FragmentConnect=新的ConnectFragment; Fragment FragmentDashboard=新的DashboardFragment; Fragment FragmentChat=新ChatFragment; @凌驾 受保护的void onCreateBundle savedInstanceState{ super.onCreatesavedInstanceState; setContentViewR.layout.activity_main; Toolbar Toolbar=findviewbydr.id.Toolbar; 设置支持操作工具栏; BottomNavigationView-bottomNav=findViewByIdR.id.bottom\u导航; bottomNav.setOnNavigationItemSelectedListenernavListener; fm.beginTransaction.addR.id.fragment_容器,FragmentChat.hideFragmentChat.commit;//Ustvari vse 3 fragmente,skrije 2 da se nena vedno znova kreirajo fm.beginTransaction.addR.id.fragment_容器,FragmentDashboard.hideFragmentDashboard.commit; fm.beginTransaction.addR.id.fragment\u容器,FragmentConnect.commit; } 私有BottomNavigationView.OnNavigationItemSelectedListener navListener=新建BottomNavigationView.OnNavigationItemSelectedListener{ @凌驾 公共布尔onNavigationItemSelected@NonNullMenuItem MenuItem{ 活动=断开连接; 开关menuItem.getItemId{ 案例R.id.nav_连接: fm.beginTransaction.hideactive.showFragmentConnect.commit; 活动=断开连接; 返回true; 案例R.id.nav_仪表板: fm.beginTransaction.hideactive.showFragmentDashboard.commit; 活动=仪表板碎片; 返回true; 案例R.id.nav_发送: fm.beginTransaction.hideactive.showFragmentChat.commit; 活动=分段聊天; 返回true; } 返回false; } }; @凌驾 public void onInputChatSentCharSequence输入{ ConnectFragment.updateEditttextInput; } @凌驾 公共无效onInputConnSentCharSequence输入{ DashboardFragment.UpdateDittextInput; } @凌驾 公共无效onInputDashSentCharSequence输入{ ChatFragment.UpdateDittextInput; } } 片段: 所有3个片段都有相同的代码,下面是Dashboard和Chat 公共类DashboardFragment扩展了该片段{ 私人碎片监听; 私有静态编辑文本; 私人按钮按钮; 公共接口碎片侦听器{ void onInputDashSend字符序列输入; } @可空 @凌驾 公众观点onCreateView@NonNull布局扁平充气机、@Nullable ViewGroup容器、@Nullable Bundle savedInstanceState{ 视图v=充气器。充气器。布局。仪表板,容器,错误; editText=v.findviewbydr.id.edit\u text; ButtonOk=v.findviewbydr.id.Button\u Ok; ButtonOk.SetOnClickListener新建视图.OnClickListener{ @凌驾 公共视图v{ CharSequence输入=editText.getText; listener.onInputDashSentinput; } }; 返回v; } 公共静态void updateItemExtCharSequence newText{ editText.setTextnewText; } @凌驾 公共上下文{ 超级语境; FragmentDashListener的ifcontext实例{ 侦听器=侦听器上下文的碎片; }否则{ 抛出新的RuntimeExceptioncontext.toString+必须实现FragmentDashListener; } } } 公共类ChatFragment扩展了片段{ 私人碎片监听; 私有静态编辑文本; 私人按钮按钮; 公共接口碎片侦听器{ void onInputCharSequence输入; } @可空 @凌驾 公众观点onCreateView@NonNull布局扁平充气机、@Nullable ViewGroup容器、@Nullable Bundle savedInstanceState{ 视图v=充气机.充气机.layout.fragment\u chat,容器,false; editText=v.findviewbydr.id.edit\u text; ButtonOk=v.findviewbydr.id.Button\u Ok; ButtonOk.SetOnClickListener新建视图.OnClickListener{ @凌驾 公共视图v{ CharSequence输入=editText.getText; listener.onInputChatSentinput; } }; 返回v; } 公共静态void updateItemExtCharSequence newText{ editText.setTextnewText; } @凌驾 公共上下文{ 超级语境; FragmentChatListener的ifcontext实例{ 监听器=片段监听器上下文; }否则{ 抛出新的RuntimeExceptioncontext.toString+必须实现FragmentChatListener; } } } 删除第一行Java 第一次选择时,片段“覆盖”另一个片段,java,android,android-fragments,Java,Android,Android Fragments,我使用底部导航在3个片段之间切换:ConnectFragment、DashboardFragment和ChatFragment 从“连接”切换到“聊天”或从“聊天”切换到“聊天”都可以正常工作,但当我选择“Dashboard”时,它会导致一个错误,在导航中选择“聊天”时会出现“Dashboard”,这是什么原因造成的 所有3个片段都有相同的功能和布局,所以我认为问题在于MainActivity 主要活动: 公共类MainActivity扩展AppCompatActivity实现Dashboard
active = FragmentConnect;
从onNavigationItemSelected方法。这将解决问题
或者修改如下
if(active == null) {
active = FragmentConnect;
}