Java 片段事务在替换中无法正常工作
我正在使用碎片和表格。 有一个问题。第一次显示Java 片段事务在替换中无法正常工作,java,android,android-fragments,android-tablayout,Java,Android,Android Fragments,Android Tablayout,我正在使用碎片和表格。 有一个问题。第一次显示hystory片段,但第二次和其他时间不显示。但是home片段工作正常,随时显示 TabLayout tabLayout; FrameLayout frm_Content; FragmentManager fragmentManager; @Override protected void onCreate(Bundle savedInstanceState) { super.onCreate(savedInstanceState);
hystory
片段,但第二次和其他时间不显示。但是home
片段工作正常,随时显示
TabLayout tabLayout;
FrameLayout frm_Content;
FragmentManager fragmentManager;
@Override
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.activity_main);
tabLayout = (TabLayout) findViewById(R.id.tab_layout);
frm_Content = (FrameLayout) findViewById(R.id.frm_content);
final HomeFragment homeFragment = new HomeFragment();
final HistoryFragment historyFragment =new HistoryFragment();
fragmentManager = getSupportFragmentManager();
if (savedInstanceState == null) {
fragmentManager.beginTransaction()
.add(R.id.frm_content, homeFragment)
.commit();
}
tabLayout.addTab(tabLayout.newTab().setText("home"),0);
tabLayout.addTab(tabLayout.newTab().setText("hystory"),1);
tabLayout.addTab(tabLayout.newTab().setText("region"),2);
tabLayout.addOnTabSelectedListener(new TabLayout.OnTabSelectedListener() {
@Override
public void onTabSelected(TabLayout.Tab tab) {
switch(tab.getPosition()){
case 0 :
// fragmentManager.beginTransaction().hide(historyFragment);
fragmentManager.beginTransaction().replace(R.id.frm_content, homeFragment)
.commit();
.break();
case 1:
fragmentManager.beginTransaction().replace(R.id.frm_content, historyFragment)
.commit();
.break();
case 2 :
}
}
@Override
public void onTabUnselected(TabLayout.Tab tab) {
}
@Override
public void onTabReselected(TabLayout.Tab tab) {
}
});
}
XML:
试试这个:
final FragmentTransaction fTransaction = getFragmentManager().beginTransaction();
fTransaction.replace(R.id.frm_content, new NewFragment(), "NewFragmentTag");
fTransaction.commit();
好的,那么你的问题可能是你忘了在箱子里放
break
在OnCreate中,将homeFragment视图作为您看到的第一个视图。然后单击0索引中的选项卡,打开homeFragment,但在homeFragment、historyFragment打开之后,您错过了中断
单击historyFragment(第一个位置)时,您也会错过中断
,但在下一个(第二个位置)索引上没有其他操作,因此片段不会更改
您应该做的是在替换片段后放置中断
switch(tab.getPosition()){
case 0 :
// fragmentManager.beginTransaction().hide(historyFragment);
fragmentManager.beginTransaction().replace(R.id.frm_content, homeFragment)
.commit();
break;
case 1:
fragmentManager.beginTransaction().replace(R.id.frm_content, historyFragment)
.commit();
break;
case 2 :
}
switch(tab.getPosition()){
case 0 :
// fragmentManager.beginTransaction().hide(historyFragment);
fragmentManager.beginTransaction().replace(R.id.frm_content, homeFragment)
.commit();
break;
case 1:
fragmentManager.beginTransaction().replace(R.id.frm_content, historyFragment)
.commit();
break;
case 2 :
}