2

A --> リストフラグメント

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();

これが私の FragmentActivity クラスです。

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 に戻ることはできません。助けてくれてありがとう

編集:私はこのように解決しました:

public class FragmentTabActivity extends 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();
    }
}

}

4

0 に答える 0