Java 片段替换技术
我有三个片段,当你从TabA到TabB再到TabC滑动时,它们被绑定到标签页上,它分别使用ViewPager加载FragA、FragB和FragC(希望你理解这部分)。这个滑动标签工作得很好,但我有几个固定的按钮连接到布局的底部,当单击每个按钮时,我想加载一个新的片段来替换任何片段a,B或C。替换工作正常,但当我返回到替换的/以前的片段时,该布局上的所有UI组件都会完全消失,并且不会指示它是否已暂停、停止或销毁。代码如下: 替换以前的片段代码:Java 片段替换技术,java,android,android-fragments,Java,Android,Android Fragments,我有三个片段,当你从TabA到TabB再到TabC滑动时,它们被绑定到标签页上,它分别使用ViewPager加载FragA、FragB和FragC(希望你理解这部分)。这个滑动标签工作得很好,但我有几个固定的按钮连接到布局的底部,当单击每个按钮时,我想加载一个新的片段来替换任何片段a,B或C。替换工作正常,但当我返回到替换的/以前的片段时,该布局上的所有UI组件都会完全消失,并且不会指示它是否已暂停、停止或销毁。代码如下: 替换以前的片段代码: if(actionBar.isSh
if(actionBar.isShowing())
{
actionBar.hide();
}
FragmentManager fms = getSupportFragmentManager();
FragmentTransaction fts = fms.beginTransaction();
search s = new search();
if(getCurrentDisplayFragment() == Type1)
{
setcurrentItem(viewPager.getCurrentItem());
Fragment frgs = mAdapter.getItem(viewPager.getCurrentItem());
viewPager.removeViewAt(viewPager.getCurrentItem());
frgs.setUserVisibleHint(false);
Log.i("if say", "Not Responding");
}
fts.replace(R.id.hoster, s);
fts.addToBackStack("search");
fts.commit();
setCurrentDisplayFragment(s,Type2);
setCurrentDisplayFragment(s,Type2)代码>我构建该代码是为了帮助指示要替换的片段以及要采取的措施。S是一个片段,Type2是一个字符串
因此,当按下“后退”按钮时,我想返回到先前替换的任何片段A、B或C。
代码如下:
@Override
public void onBackPressed() {
// TODO Auto-generated method stub
//super.onBackPressed();
Log.i("event in back","I have been presssed ");
if(getCurrentDisplayFragment() == Type2)
{
actionBar.show();
FragmentManager fm = getSupportFragmentManager();
FragmentTransaction ft = fm.beginTransaction();
fm.popBackStack();
ft.remove(getCurrentDisplayFragment(Type2));
ft.commit();
viewPager.setCurrentItem(getcurrentItem());
actionBar.setSelectedNavigationItem(getcurrentItem());
Fragment frags = mAdapter.getItem(viewPager.getCurrentItem());
frags.setUserVisibleHint(true);
setCurrentDisplayFragment(frags, Type1);
}
else
{
}
}
虽然没有显示一些变量名和方法声明,但您应该了解我在做什么,因为所有声明都已完成。只是更换和保留他们的用户界面状态给了我一个问题。你为什么把这件事弄得这么复杂?如果要替换视图寻呼机中的任何片段,只需替换视图寻呼机即可。如果有一个片段用选项卡固定住视图寻呼机,并且当按下底部按钮时,您只需用新片段替换固定住视图寻呼机的片段,这会容易得多。这样,当按下后退按钮时,您无需执行任何操作。hoster是封装viewpager的片段的id。