1

I have framgments that are called in the order FragOne calls FragTest and FragTest calls FragBook. When my current fragment is FragBook on pressing the back button, the FragTest is just shown for split second and then the my app is sent to the app tray.

@Override
public boolean onKeyDown(int keyCode, KeyEvent event) {
    FragmentManager fragManager = getSupportFragmentManager();
    Fragment frag = fragManager.findFragmentByTag("Frag_Book");

    if ((keyCode == KeyEvent.KEYCODE_BACK)) {
        if (frag.isVisible()) {
            fragManager.beginTransaction()
                    .replace(R.id.container, Fragment.instantiate(MainActivity.this, fragments[1]),"Frag_Test")
                    .commit();
        }
    }
    return super.onKeyDown(keyCode, event);
}

Where have I gone wrong in the approach? Thanks...

Jerry
  • 410
  • 6
  • 17

1 Answers1

0
    @Override
    public boolean onKeyDown(int keyCode, KeyEvent event) {
        FragmentManager fragManager = getSupportFragmentManager();
        Fragment frag = fragManager.findFragmentByTag("Frag_Book");

        if ((keyCode == KeyEvent.KEYCODE_BACK)) {
            if (frag.isVisible()) {
                fragManager.beginTransaction()
                        .replace(R.id.container, Fragment.instantiate(MainActivity.this, fragments[1]),"Frag_Test")
                        .commit();
             return true; //"------------- should be add"
            }
        }
        return super.onKeyDown(keyCode, event);
    }
Imran Ali Khan
  • 8,469
  • 16
  • 52
  • 77