简体   繁体   中英

pressing back button application mixes in android

facing issue with pressing back button in my Fragement .pressing back my application got mixed with other fragments.

can any one help me

I have 4 Fragements

DealerDetails.java

 rootView.setFocusableInTouchMode(true);
    rootView.requestFocus();
    rootView.setOnKeyListener(new View.OnKeyListener() {
        @Override
        public boolean onKey(View v, int keyCode, KeyEvent event) {
            // Log.i(tag, "keyCode: " + keyCode);
            if (keyCode == KeyEvent.KEYCODE_BACK) {

                // Log.i(tag, "onKey Back listener is working!!!");
                // getFragmentManager().popBackStack(null, FragmentManager.POP_BACK_STACK_INCLUSIVE);

                Fragment fragment = new DealerByNamesFragement();
                FragmentManager fragmentManager = getFragmentManager();
                fragmentManager.beginTransaction()
                        .replace(R.id.frame_container, fragment).commit();

                return true;
            } else {
                return false;
            }
        }
    });

By pressing back button i want to show DealerByNamesFragement.java

DealerByNamesFragement.java

    rootView.setFocusableInTouchMode(true);
            rootView.requestFocus();
            rootView.setOnKeyListener(new View.OnKeyListener() {
                @Override
                public boolean onKey(View v, int keyCode, KeyEvent event) {
                    // Log.i(tag, "keyCode: " + keyCode);

                        if(keyCode == KeyEvent.KEYCODE_BACK && keyCode == KeyEvent.ACTION_DOWN ) {

                            // Log.i(tag, "onKey Back listener is working!!!");
                            // getFragmentManager().popBackStack(null, FragmentManager.POP_BACK_STACK_INCLUSIVE);

                            Fragment fragment = new DealerSearchFragment();
                            FragmentManager fragmentManager = getFragmentManager();
                            fragmentManager.beginTransaction()
                                    .replace(R.id.frame_container, fragment).addToBackStack("tag1").commit();

                        return true;
                    } else {
                        return false;
                    }
                }
            });

By pressing back redirecting to DealerSearchFragment.java

DealerSearchFragment.java

 rootView.setFocusableInTouchMode(true);
            rootView.requestFocus();
            rootView.setOnKeyListener(new View.OnKeyListener() {
                @Override
                public boolean onKey(View v, int keyCode, KeyEvent event) {
                    // Log.i(tag, "keyCode: " + keyCode);
                    if (keyCode == KeyEvent.KEYCODE_BACK) {

                        // Log.i(tag, "onKey Back listener is working!!!");
                        // getFragmentManager().popBackStack(null, FragmentManager.POP_BACK_STACK_INCLUSIVE);

                        Fragment fragment = new HomeFragment();
                        FragmentManager fragmentManager = getFragmentManager();
                        fragmentManager.beginTransaction()
                                .replace(R.id.frame_container, fragment).commit();

                        return true;
                    } else {
                        return false;
                    }
                }
            });

Do you have onBackPressed() in your activity?

Don't forget to set addToBackStack to null when calling new fragment from activity.

mFragmentTransaction.addToBackStack(null);

and add onBackPressed() method to the activity in order to finish the back button process

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

The technical post webpages of this site follow the CC BY-SA 4.0 protocol. If you need to reprint, please indicate the site URL or the original address.Any question please contact:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM