Warning: file_get_contents(/data/phpspider/zhask/data//catemap/3/android/189.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Java 第一次选择时,片段“覆盖”另一个片段_Java_Android_Android Fragments - Fatal编程技术网

Java 第一次选择时,片段“覆盖”另一个片段

Java 第一次选择时,片段“覆盖”另一个片段,java,android,android-fragments,Java,Android,Android Fragments,我使用底部导航在3个片段之间切换:ConnectFragment、DashboardFragment和ChatFragment 从“连接”切换到“聊天”或从“聊天”切换到“聊天”都可以正常工作,但当我选择“Dashboard”时,它会导致一个错误,在导航中选择“聊天”时会出现“Dashboard”,这是什么原因造成的 所有3个片段都有相同的功能和布局,所以我认为问题在于MainActivity 主要活动: 公共类MainActivity扩展AppCompatActivity实现Dashboard

我使用底部导航在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; } } } 删除第一行

active = FragmentConnect;
从onNavigationItemSelected方法。这将解决问题

或者修改如下

if(active == null) {
    active = FragmentConnect;
}