Fragment pressing back button Fragment pressing back button android android

Fragment pressing back button


This worked for me.

-Add .addToBackStack(null) when you call the new fragment from activity.

    FragmentTransaction mFragmentTransaction = getFragmentManager()                .beginTransaction();    ....    mFragmentTransaction.addToBackStack(null);

-Add onBackPressed() to your activity

    @Overridepublic void onBackPressed() {    if (getFragmentManager().getBackStackEntryCount() == 0) {        this.finish();    } else {        getFragmentManager().popBackStack();    }}


Easiest way ever:

onResume():

@Overridepublic void onResume() {    super.onResume();    getView().setFocusableInTouchMode(true);    getView().requestFocus();    getView().setOnKeyListener(new View.OnKeyListener() {        @Override        public boolean onKey(View v, int keyCode, KeyEvent event) {            if (event.getAction() == KeyEvent.ACTION_UP && keyCode == KeyEvent.KEYCODE_BACK) {                // handle back button's click listener                Toast.makeText(getActivity(), "Back press", Toast.LENGTH_SHORT).show();                return true;            }            return false;        }    });}

Edit 1: If fragment having EditText.

private EditText editText;

onCreateView():

editText = (EditText) rootView.findViewById(R.id.editText);

onResume():

@Overridepublic void onResume() {    super.onResume();    editText.setOnKeyListener(new View.OnKeyListener() {        @Override        public boolean onKey(View v, int keyCode, KeyEvent event) {            if (keyCode == KeyEvent.KEYCODE_BACK) {                editText.clearFocus();            }            return false;        }    });    getView().setFocusableInTouchMode(true);    getView().requestFocus();    getView().setOnKeyListener(new View.OnKeyListener() {        @Override        public boolean onKey(View v, int keyCode, KeyEvent event) {            if (event.getAction() == KeyEvent.ACTION_UP && keyCode == KeyEvent.KEYCODE_BACK) {                // handle back button's click listener                Toast.makeText(getActivity(), "Back press", Toast.LENGTH_SHORT).show();                return true;            }            return false;        }    });}

Note: It will work if you have EditText in fragment.

Done


This is a working solution for me:

dialog.setOnKeyListener(new DialogInterface.OnKeyListener() {                    @Override                    public boolean onKey(DialogInterface dialog, int keyCode, KeyEvent event) {                        if (keyCode == KeyEvent.KEYCODE_BACK) {                            // DO WHAT YOU WANT ON BACK PRESSED                            return true;                        }                        return false;                    }                });

Edit: You can replace dialog with getView() for fragments.