【发布时间】:2014-01-09 18:11:36
【问题描述】:
当您从 TabA 滑动到 TabB 再到 TabC 时,我有三个绑定到 Tabs 的片段,它分别使用 ViewPager 加载 FragA、FragB 和 FragC(希望您理解这部分)。这个滑动选项卡工作得很好,但我在布局底部附加了一些固定按钮,当单击每个按钮时,我想加载一个新片段来替换片段 A、B 或 C 中的任何一个。替换工作正常但是当我返回到替换/上一个片段时,该布局上的所有 UI 组件完全消失,并且它不指示它是否已暂停、停止或销毁。代码如下:
替换之前的片段代码:
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是Fragment,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
{
}
}
虽然没有显示一些变量名称和方法声明,但您应该了解正在做什么,因为所有声明都已完成。它只是替换和保留他们的 UI 状态,这给了我一个问题。
【问题讨论】:
标签: java android android-fragments