您好我使用 Stack 变量来存储用户点击的片段序列
例如:[A,B,C,A,D]
现在我需要检查一个片段是否在堆栈中退出,我需要重用它。 从上面的例子中我需要重用第一个元素,即用户第四次点击时的A.
问题是我在片段A中有一个自定义键盘打开,现在如果相同的片段在堆栈中作为第四个元素键盘没有打开。但是当我反击并转到第一个元素键盘时,在第一个实例中打开一个
存储在堆栈中的代码
public void switchContent(Fragment fragment) {
if(mContent !=null && (fragment.getClass().toString().equals(mContent.getClass().toString()))){
getSlidingMenu().showContent();
return;
}
mContent = fragment;
FragmentManager fragmentManager = getSupportFragmentManager();
FragmentTransaction ft = fragmentManager.beginTransaction();
ft.add(R.id.content_frame, mContent);
FragmentChangeActivity.fragmentStack.lastElement().onPause();
FragmentChangeActivity.fragmentStack.push(mContent);
ft.commit();
getSlidingMenu().showContent();
}
背压代码
@Override
public void onBackPressed() {
if (fragmentStack.size() >= 2) {
FragmentTransaction ft = fragmentManager.beginTransaction();
fragmentStack.lastElement().onPause();
ft.remove(fragmentStack.pop());
fragmentStack.lastElement().onResume();
ft.show(fragmentStack.lastElement());
ft.commit();
} else {
super.onBackPressed();
}
}
感谢任何帮助。
答案 0 :(得分:0)
以下代码检查,如果名为SearchFragment的Fragment
在backstack中存在与否,则相应地进行处理。您可以使用此逻辑来确定是否存在特定的Fragment
FragmentManager fragmentManager=getSupportFragmentManager();
Fragment currentFragment = (Fragment)fragmentManager.findFragmentById(R.id.mainContent);
if(currentFragment!=null && currentFragment instanceof SearchFragment){
//SearchFragment exists in backstack , process accordingly
}else{
//SearchFragment not present in backstack
}