Android 从同一列表片段调用列表片段,然后按backpress按钮

Android 从同一列表片段调用列表片段,然后按backpress按钮,android,list,android-fragments,fragment,Android,List,Android Fragments,Fragment,-->列表片段 B-->列表片段(从A调用) C-->与B相同(从B调用) 我使用这些函数从A调用B > FragmentManager fm = getFragmentManager(); > if (fm != null) { > FragmentTransaction ft = fm.beginTransaction(); > ft.replace(R.id.fr

-->列表片段

B-->列表片段(从A调用)

C-->与B相同(从B调用)

我使用这些函数从A调用B

>   FragmentManager fm = getFragmentManager();
>               if (fm != null) {
>                   FragmentTransaction ft = fm.beginTransaction();
>                   ft.replace(R.id.fragment_content, entryListFragment);
>           ft.setTransition(FragmentTransaction.TRANSIT_FRAGMENT_OPEN);
>                   ft.addToBackStack(null);
>                   ft.commit();
这是我的零碎活动课

public class FragmentTabActivity extends FragmentActivity {

    @Override
    protected void onCreate(Bundle savedInstanceState) {
        super.onCreate(savedInstanceState);

        setContentView(R.layout.activity_fragment_tab);

        Commons.globalContext = this;    
        FragmentManager fm = getSupportFragmentManager();
        TabFragment tabFragment = (TabFragment) fm.findFragmentById(R.id.fragment_tab);
    }


    @Override
    public void onBackPressed() {

        FragmentManager fm = getSupportFragmentManager();
        Log.e("BACK STACK", "" + fm.getBackStackEntryCount());

        if(fm.getBackStackEntryCount() > 0) {
            fm.popBackStack();
        }
    }           
}
当我从B返回时,我可以返回A,但我不能从C返回到B。 谢谢你的帮助

编辑:我是这样解决的:

公共类FragmentTabActivity扩展了FragmentActivity{

private Global globalClass;

@Override
protected void onCreate(Bundle savedInstanceState) {
    super.onCreate(savedInstanceState);

    globalClass = ((Global) getApplicationContext());

    setContentView(R.layout.activity_fragment_tab);

    getSupportFragmentManager().addOnBackStackChangedListener(
            new MainOnBackStackChangedListener());

}



private class MainOnBackStackChangedListener implements
        OnBackStackChangedListener {

    public void onBackStackChanged() {
        Log.e("Stack COUNT", "" + 
    getSupportFragmentManager().getBackStackEntryCount());
    }
}

@Override
public void onBackPressed() {

    try {
        if (getSupportFragmentManager().getBackStackEntryCount() > 0) {


                int lastIndex=globalClass.historyList.size()-1;

                globalClass.historyList.remove(lastIndex);

                for (int i = 0; i <globalClass.counterForBackPress; i++) {

                    getSupportFragmentManager().popBackStack();
                }   

        } else {
                     FragmentTabActivity.this.finish();
        }
    } catch (Exception e) {
        e.printStackTrace();
    }
}
私有全局全局类;
@凌驾
创建时受保护的void(Bundle savedInstanceState){
super.onCreate(savedInstanceState);
globalClass=((全局)getApplicationContext());
setContentView(R.layout.activity\u fragment\u选项卡);
getSupportFragmentManager().AddOnBackbackChangedListener(
新MainBackbackChangedListener());
}
私有类MainOnBackbackChangedListener实现
OnBackbackChangedListener{
BackbackChanged()上的公共无效{
Log.e(“堆栈计数”和“+
getSupportFragmentManager();
}
}
@凌驾
public void onBackPressed(){
试一试{
如果(getSupportFragmentManager().GetBackbackEntryCount()>0){
int lastIndex=globalClass.historyList.size()-1;
globalClass.historyList.remove(lastIndex);

对于(int i=0;我也面临同样的问题…我也面临同样的问题。。。